/**
* 已知两个非负整数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组合
最新推荐文章于 2024-11-05 20:43:14 发布
本文介绍了一个组合算法的Java实现,该算法能够找出指定集合S中所有可能的k个元素的组合。通过递归的方式,程序遍历集合S并记录下所有有效的组合方案。
168万+

被折叠的 条评论
为什么被折叠?



