如:combination(5,3)
要求输出:543,542,541,532,531,521,432,431,421,321
递归,当k等于1的时候进行输出,
当第一个数选的5,则从剩下的4321中选2个数,即combination(4,2)
第二个数选的4,则从剩下的321中选1个数,即combination(3,1),输出543,542,541
第二个数选的3,则从剩下的21中选1个数,即combination(2,1),输出532,531
第二个数选的2,则从剩下的1中选1个数,即combination(1,1),输出521
当第一个数选的4,则从剩下的321中选2个数,即combination(3,2)
第二个数选的3,则从剩下的21中选1个数,即combination(2,1),输出432,431
第二个数选的2,则从剩下的1中选1个数,即combination(1,1),输出421
当第一个数选的3,则从剩下的21中选2个数,即combination(2,2)
第二个数选的2,则从剩下的1中选1个数,即combination(1,1),输出321
import java.util.ArrayList;
public class combination {
static ArrayList arrayList = new ArrayList();
public static void main(String[] args) {
int n = 5;
int k = 3;
int [] arr = new int [n+1];
for(int i=0;i<=n;i++){
arr[i] = i;
}
Combination(n,k,arr);
}
private static void Combination(int n, int k,int arr[]) {
if(n0;i--){
arrayList.add(arr[i]);
System.out.println(arrayList);
arrayList.remove((Object)arr[i]);
}
}
if(k>1){
for(int i=n;i>=k;i--){
arrayList.add(arr[i]);
Combination(i-1,k-1,arr);
arrayList.remove((Object)arr[i]);
}
}
}
}