c++实现队列编程解决舞伴
时间: 2023-09-17 18:13:50 浏览: 164
舞伴问题可以使用队列来实现。假设有n个男生和n个女生,需要将他们成对地组成舞伴。我们可以将男生和女生分别放入两个队列中,然后依次从两个队列中取出队头元素组成舞伴。如果两个队列中男生和女生的数量不相等,那么数量较多的一方就会等待,直到另一方的队列中出现新的元素。
以下是C++实现队列来解决舞伴问题的代码:
```cpp
#include <iostream>
#include <queue>
using namespace std;
int main() {
int n;
cout << "请输入男女生的数量:";
cin >> n;
queue<string> male_queue; // 男生队列
queue<string> female_queue; // 女生队列
// 分别输入男生和女生的名字
for (int i = 0; i < n; i++) {
string name;
cout << "请输入第" << i + 1 << "个男生的名字:";
cin >> name;
male_queue.push(name);
}
for (int i = 0; i < n; i++) {
string name;
cout << "请输入第" << i + 1 << "个女生的名字:";
cin >> name;
female_queue.push(name);
}
// 开始组成舞伴
while (!male_queue.empty() && !female_queue.empty()) {
string male = male_queue.front();
male_queue.pop();
string female = female_queue.front();
female_queue.pop();
cout << male << " 和 " << female << " 成为了舞伴" << endl;
}
// 处理剩余的男生或女生
if (!male_queue.empty()) {
cout << "还有" << male_queue.size() << "个男生没有舞伴" << endl;
while (!male_queue.empty()) {
string male = male_queue.front();
male_queue.pop();
cout << male << " 没有舞伴" << endl;
}
}
if (!female_queue.empty()) {
cout << "还有" << female_queue.size() << "个女生没有舞伴" << endl;
while (!female_queue.empty()) {
string female = female_queue.front();
female_queue.pop();
cout << female << " 没有舞伴" << endl;
}
}
return 0;
}
```
这里使用了STL库中的queue容器来实现队列。首先输入男生和女生的名字,然后依次从两个队列中取出队头元素组成舞伴,并输出结果。最后处理剩余的男生或女生,如果有人没有舞伴就输出相应的信息。
阅读全文