题解(有解释)
2025-05-20 07:12:45
发布于:四川
46阅读
0回复
0点赞
/*
这是一个多层循环的问题,由于循环层数m不确定,且每层循环操作一样,
故采用递归解题。
*/
#include<bits/stdc++.h>
using namespace std;
int m, a[10];  // a[10]用于记录每次抽奖抽取小球的编号
void dfs(int n) {   // n 表示抽奖的次数
  if (n == m + 1) {  // 抽奖次数超过m就结束
      for (int i = 1; i <= m; i++)
          cout << a[i] << " ";
      cout << endl;
      return;
  }
  for (int i = 1; i <= 3; i++) {
      a[n] = i;  // 记录每次抽奖时抽取小球的编号
      dfs(n + 1); // 递归进行下一次抽奖
  }
}
int main() {
  cin >> m;
  dfs(1);
  return 0;
}
这里空空如也

有帮助,赞一个