#将核心的部分改为泛型
/**
* @author Bob.chen
* @date 2018年11月22日-下午2:47:50
* @desc 组合,从M个元素中取N个元素组合
*/
public class Combination {
/**
*
* @desc
* @author Bob.chen
* @param input 输入
* @param output 临时保存组合
* @param index 长度索引
* @param start 开始索引
* @param r void 返回值
* @throws
*/
public <E> void dfs(E[] input, E[] output, int index, int start,List<List<E>> r) {
if (index == output.length) {
r.add(Lists.newArrayList(output));
} else {
for (int j = start; j < input.length; j++) {
output[index] = input[j];
dfs(input, output, index + 1, j + 1,r);
}
}
}
private static class CombinationHandler {
private static Combination instance = new Combination();
}
private Combination() {
}
public static Combination getInstance() {
return CombinationHandler.instance;
}
public static void main(String[] args) {
String[] input = { "A", "B", "C","D"};
int N = 2;// 组合长度
String[] output = new String[N];
List<List<String>> r = new ArrayList<List<String>>();
Combination.getInstance().dfs(input, output, 0, 0,r);
System.out.println(r);
}
}