ACwing93 递归实现组合型枚举 dfs
网址:https://www.acwing.com/problem/content/95/
题意:
从 $1$~$n$ 这 $n$ 个整数中随机选出 $m$ 个,输出所有可能的选择方案。
题解:
参照acwing92,将层数限定在$m$层即可。
AC代码:
#include <bits/stdc++.h>
using namespace std;
int sta[55], cnt;
int n, m;
void dfs(int beg, int div)
{
if (div == m)
{
if (cnt != m)
return;
for (int i = 0; i < m; ++i)
{
printf("%d", sta[i]);
if (i < m - 1)
printf(" ");
}
printf("\n");
return;
}
for (int i = beg; i <= n; ++i)
{
sta[cnt++] = i;
dfs(i + 1, div + 1);
--cnt;
}
return;
}
int main()
{
scanf("%d%d", &n, &m);
dfs(1, 0);
return 0;
}

浙公网安备 33010602011771号