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; }