AcWing 93. 递归实现组合型枚举
原题链接
简单
作者:
守拙.
,
2023-03-19 13:22:59
,
所有人可见
,
阅读 23
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
const int N=30;
int n,m;//n个整数中随机选出 m 个
int way[N];
void dfs(int u,int start)//u为当前在选的第几个数,start则表示从几开始
{
if(n-start<m-u) return ;//剪枝 如果当前比如为u=1,5-4<3-1 那么4 5 肯定不满足
if(u==m+1)//选完了
{
for(int i=1;i<=m;i++) printf("%d ",way[i]);
puts("");
return ;
}
for(int i=start;i<=n;i++)
{
way[u]=i;
dfs(u+1,i+1);//选下一个数,从i+1开始
way[u]=0;//恢复现场 (用0标记)
}
}
int main()
{
scanf("%d%d",&n,&m);
dfs(1,1);
return 0;
}