AcWing 93. 递归实现组合型枚举
原题链接
简单
作者:
牛奶小柒Luke
,
2021-03-20 18:20:04
,
所有人可见
,
阅读 235
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 30;
int n,m;
int ways[N];
void dfs(int start,int u){
if(u + n - start < m) return; //剪枝
if(u == m + 1){
for(int i = 1;i <= m;++i) printf("%d ",ways[i]);
puts("");
return;
}
for(int i = start;i <= n;++i){
ways[u] = i;
dfs(i + 1,u + 1);
ways[u] = 0; //恢复现场
}
}
int main(){
scanf("%d%d",&n,&m);
dfs(1,1);
return 0;
}