AcWing 93. 递归实现组合型枚举[Java]
原题链接
简单
作者:
cyb-包子
,
2020-10-10 17:36:42
,
所有人可见
,
阅读 483
import java.io.*;
import java.util.*;
public class Main{
public static List<Integer> list = new ArrayList<Integer>();
static void dfs(int x, int n, int m){
if(list.size()>m||list.size()+n-x+1<m){
//当取的数超过了m个时,剪枝叶
//或者是 不够选了的情况
return;
}
if(x == n + 1)
{
for(int i = 0;i < list.size();i++)
System.out.print(list.get(i) + " ");
System.out.println();
return;
}
//选择以及不选择
list.add(x);
dfs(x+1,n,m);
list.remove(list.size()-1);
//不选的,把他移除
dfs(x+1,n,m);
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
sc.close();
dfs(1,n,m);
}
}