【问题描述】
程序设计考试结束了,传来个不好的消息:有一个学生没参加考试!需要尽快知道缺席考试的人是谁,以便尽快做出处理。
糟糕的是,尽管有签到表,但由于人数较多,签到情况比较混乱:有的签到表签在一张白纸上,有的虽然签在名册上,但并不是签在自己姓名旁,更有学生签到了别的签到表上……
现在只能根据这2n-1个姓名(名册上有n个学生姓名,签到有n-1个姓名,签到姓名和名册姓名可能混在一起了),来找到缺席考试的人是谁。唯一一个有利的条件是所有参加考试的人都签了名,且只签一次,签名也都正确无误。
现在任务交给你:编写一个程序,找出缺席考试的是谁。
#include <iostream>
#include <unordered_set>
using namespace std;
int main()
{
int n;
cin >> n;
unordered_set<string> sets;
string s;
while (n != 0)
{
sets.clear();
for (int i = 0; i < 2 * n - 1; i++)
{
cin >> s;
if (!sets.insert(s).second)
sets.erase(s);
}
cout << *sets.begin() << endl; //begin()是对首元素的指针
cin >> n;
}
return 0;
}