考点
题解
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时,说明已取够,应当输出