三色球题目描述 题目内容:一个袋子中有红、黄、兰3个球,依次从袋子中拿出所有的球。编写一个程序,输出所有的拿法。
时间: 2024-02-21 22:00:59 浏览: 265
好的,这是一个经典的组合题目,可以使用递归的思路来解决。我们可以先定义一个数组,记录每次从袋子中取出的球的颜色,然后通过递归的方式从袋子中取出球,直到取完为止。代码如下:
```
#include <iostream>
using namespace std;
const int n = 3; // 球的数量
string colors[n] = {"红", "黄", "兰"}; // 球的颜色
void dfs(int depth, string ans[]) {
if (depth == n) { // 取完所有球,输出结果
for (int i = 0; i < n; i++) {
cout << ans[i] << " ";
}
cout << endl;
return;
}
for (int i = 0; i < n; i++) { // 枚举所有可能的球的颜色
ans[depth] = colors[i]; // 记录当前取出的球的颜色
dfs(depth + 1, ans); // 递归取下一个球
}
}
int main() {
string ans[n];
dfs(0, ans);
return 0;
}
```
输出结果为:
```
红 红 红
红 红 黄
红 红 兰
红 黄 红
红 黄 黄
红 黄 兰
红 兰 红
红 兰 黄
红 兰 兰
黄 红 红
黄 红 黄
黄 红 兰
黄 黄 红
黄 黄 黄
黄 黄 兰
黄 兰 红
黄 兰 黄
黄 兰 兰
兰 红 红
兰 红 黄
兰 红 兰
兰 黄 红
兰 黄 黄
兰 黄 兰
兰 兰 红
兰 兰 黄
兰 兰 兰
```
阅读全文