题目:组合的输出 - 洛谷
#include<bits/stdc++.h>
using namespace std;
int n, r;
int a[22];
void dfs(int m, int startx) {
if(m == r) {
for(int i = 1; i <= r; i++) cout << setw(3) << a[i];
cout << endl;
return; //返回主函数,计数重新开始
}
for(int i = startx; i <= n; i++) {
a[m+1] = i;
dfs(m+1, i+1); // 修改递归调用的参数为 startx+1
}
return;
}
signed main() {
std::ios::sync_with_stdio(false);
std::cin.tie(NULL);
cin >> n >> r;
dfs(0, 1);
return 0;
}
学到的:
- dfs的应用和具体理解
- startx变量的灵活应用,为了防重