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<Integer> 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<ArrayList<Integer>> result = new ArrayList<>();
public static void combine(List<Integer> input, int start, int length, LinkedList<Integer> tempList) {
if (length == 0) {
ArrayList<Integer> 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);
}
}