题目
递归实现组合型枚举
题解
可以参考上一题的递归代码,思路是一样的,也是拿个数组存储是否选了该位,多了一个参数记录选了几个,若选了cnt+1,否则直接cnt不变化。
参考代码
#include<iostream>
using namespace std;
const int N = 25;
int n, m;
bool st[N];
void dfs(int u, int cnt){if(u == n + 1 && cnt == m){for(int i = 1; i <= n; i ++) if(st[i]) cout << i << " ";puts("");return;}if(u > n) return;st[u] = true;dfs(u + 1, cnt + 1);st[u] = false;dfs(u + 1, cnt);
}
int main(){cin >> n >> m;dfs(1,0);return 0;
}