部分组和实现
public static void dfs(int[] input,int[] output,int index,int start){
if(index==output.length){
System.out.println(Arrays.toString(output));
}else{
for(int j=start;j<input.length;j++){
output[index]=input[j];//记录选取的元素
dfs(input,output,index+1,j+1);//选取下一个元素,可选下标区间为[j+1,input.length]
}
}
全组和实现
public static void printCombination(Set<Integer> numberSet) {
Object[] a=numberSet.toArray();
int l = numberSet.size();
int nBit = 1<<l;
for (int i = 1; i <= nBit; i++) {
for (int j = 0; j < l; j++) {
if ((i << (31 - j)) >> 31 == -1) {
System.out.print(a[j]+" ");
}
}
System.out.println();
}
}
全排列实现
public static void permutation(char[]ss,int i){
if(ss==null||i<0 ||i>ss.length){//1
return;
}
if(i==ss.length-1){//2
System.out.println(new String(ss));
}else{
for(int j=i;j<ss.length;j++){//3
char temp=ss[j];
ss[j]=ss[i];
ss[i]=temp;
permutation(ss,i+1);//4
temp=ss[j]; //5
ss[j]=ss[i];
ss[i]=temp;
}
}
}