package org.example.permandcombine;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
/**
* @author xianzhe.ma
* @date 2021/12/31
*/
public class Combination {
public static void main(String[] args) {
List input = new ArrayList<>();
input.add(1);
input.add(2);
input.add(3);
input.add(4);
combine(input,0,3,new LinkedList<>());
for (ArrayList list : result) {
System.out.println(list.toString());
}
}
private static ArrayList> result = new ArrayList<>();
public static void combine(List input, int start, int length, LinkedList tempList) {
if (length == 0) {
ArrayList list = new ArrayList<>();
for (Integer num : tempList) {
list.add(num);
}
result.add(list);
return;
}
if (start == input.size()) {
return;
}
tempList.add(input.get(start));
combine(input,start+1,length - 1,tempList);
tempList.removeLast();
combine(input,start+1,length,tempList);
}
}