假设男士和女士的记录存放在一个数组中,设计算法实现舞伴配对,要求输出配对的舞伴,并输出没有配对的队头元素的姓名。
时间: 2023-04-27 20:04:22 浏览: 94
可以使用哈希表来实现舞伴配对。首先将男士和女士的记录分别存放在两个数组中,然后将其中一个数组中的元素作为键,另一个数组中的元素作为值,构建一个哈希表。遍历其中一个数组,对于每个元素,在哈希表中查找其对应的值,如果找到了,则输出配对的舞伴;如果没有找到,则输出该队头元素的姓名。
具体实现步骤如下:
1. 定义两个数组,分别存放男士和女士的记录。
2. 构建一个哈希表,将其中一个数组中的元素作为键,另一个数组中的元素作为值。
3. 遍历其中一个数组,对于每个元素,在哈希表中查找其对应的值。
4. 如果找到了,则输出配对的舞伴。
5. 如果没有找到,则输出该队头元素的姓名。
6. 遍历完整个数组后,输出没有配对的队头元素的姓名。
示例代码如下:
```
#include <iostream>
#include <unordered_map>
#include <string>
using namespace std;
int main()
{
string male[] = {"Tom", "Jack", "Mike", "John"};
string female[] = {"Lucy", "Lily", "Mary", "Jane"};
unordered_map<string, string> partners;
for (int i = ; i < 4; i++) {
partners[male[i]] = female[i];
}
for (int i = ; i < 4; i++) {
if (partners.find(female[i]) != partners.end()) {
cout << male[i] << " and " << partners[female[i]] << " are partners." << endl;
partners.erase(female[i]);
} else {
cout << female[i] << " has no partner." << endl;
}
}
for (auto it = partners.begin(); it != partners.end(); it++) {
cout << it->first << " has no partner." << endl;
}
return ;
}
```
输出结果为:
```
Tom and Lucy are partners.
Jack and Lily are partners.
Mike and Mary are partners.
Jane has no partner.
```