题解(有解释)
2025-05-20 07:12:45
发布于:四川
8阅读
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;
}
这里空空如也
有帮助,赞一个