考点
题解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| #include <bits/stdc++.h>
using namespace std;
int arr[20], N, R;
void print() { for (int i = 0; i < R; ++i) cout << setfill(' ') << setw(3) << arr[i]; cout << endl; }
void dfs(int cnt, int idx, int num) { if (cnt > R) { print(); return; } for (int i = num; i <= N; ++i) { arr[idx] = i; dfs(cnt + 1, idx + 1, i + 1); } }
int main() { cin >> N >> R; dfs(1, 0, 1); return 0; }
|
思路
根据升序且不重复的要求,每次取数都应比上一次取的数要大
又因为限定了只取R个数,所以需要额外设定一个cnt变量来计数;当cnt大于R时,说明已取够,应当输出