public class 组合型枚举排列组合问题 {
static int n;
static int m;
static ArrayList<Integer> list = new ArrayList<>();
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
n=scanner.nextInt();
m=scanner.nextInt();
fff(1);
}
private static void fff(int x) {
//结束条件
if (list.size()>m || list.size()+(n-x+1)<m){ // list.size()+(n-x+1)<m表示选中的和剩下的之和小于m
return;
}
if (x==(n+1)){//遍历完,此时一定选中了m个数
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i)+" ");
}
System.out.println();
return;
}
//选
fff(x+1);
list.add(x);
//不选
fff(x+1);
list.remove((Object)x);//此处一定要转成object类型,因为转后它的用法就不同了,可自行百度
}
}
组合型枚举的模板代码
最新推荐文章于 2024-07-25 23:03:21 发布