【C++练习】生成并打印所有可能的三色组合
题目:
生成并打印所有可能的三色组合
描述:
给定一个包含5种颜色的列表(红色、黄色、蓝色、白色、黑色),请编写一个程序,使用C++生成并打印出该列表中所有可能的三色组合。每个组合应包含三种不同的颜色,并且组合中的颜色顺序不重要(即,组合 "红, 黄, 蓝" 与 "黄, 红, 蓝" 视为相同的组合,只需输出其中一种)。
要求:
- 使用向量(
vector
)来存储颜色列表和生成的三色组合。 - 使用三重嵌套循环来遍历颜色列表,并生成所有可能的三色组合。
- 最后,遍历并打印出所有生成的三色组合,每个组合中的颜色用逗号分隔,并且每个组合占一行。
输入:
无需输入,颜色列表已给定,为 {"红", "黄", "蓝", "白", "黑"}
。
输出:
输出应包含所有可能的三色组合,每个组合占一行,颜色之间用逗号分隔。输出的顺序不要求特定顺序,但每种组合应只出现一次。
源代码:
#include <iostream>
#include <vector>
using namespace std;
int main() {
// 初始化一个包含5种颜色的向量
vector<string> colors = { "红", "黄", "蓝", "白", "黑" };
// 初始化一个二维向量,用于存储所有可能的三色组合
vector<vector<string>> combinations;
// 三重嵌套循环,用于生成所有可能的三色组合
for (int i = 0; i < colors.size(); ++i) { // 外层循环,选择第一个颜色
for (int j = i + 1; j < colors.size(); ++j) { // 中层循环,选择第二个颜色
for (int k = j + 1; k < colors.size(); ++k) { // 内层循环,选择第三个颜色
// 创建一个包含当前三个颜色的向量
vector<string> combo = { colors[i], colors[j], colors[k] };
// 将当前组合添加到组合列表中
combinations.push_back(combo);
}
}
}
// 遍历并打印所有组合
for (const auto& combo : combinations) {
cout << combo[0] << ", " << combo[1] << ", " << combo[2] << endl;
}
return 0;
}
运行截图: