/**
* 已知两个非负整数n和k(n>=k),列出集合S={1,2,~,n}的所有k组合
* @author JH
*
*/
public class three {
private static int n;
private static int k;
private static int[] list;
private static int count=0;
private static int num=0;
public static void zuhe(int i) {
if(i >= n){
if(count==k) {
output();
num++;
}
return;
}
list[i] = 1;
count++;
zuhe(i+1);
list[i] = 0;
count--;
zuhe(i+1);
}
public static void output() {
for(int i = 0; i<n; i++) {
if(list[i] != 0)
System.out.print((i+1)+" ");
}
System.out.println();
}
@SuppressWarnings("resource")
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("输入非负整数N");
n=s.nextInt();
list = new int[n];
System.out.print("输入子集整数个数");
k=s.nextInt();
zuhe(0);
System.out.println(num+"种");
}
}
回溯法 已知两个非负整数n和k(n>=k),列出集合S={1,2,~,n}的所有k组合
最新推荐文章于 2021-06-23 23:39:30 发布