产生冠军
思路:这道题,先读题分析,我们可以知道,为了产生冠军,会进行两两比赛,让我们寻找一种办法判断是否产生冠军,既然提到了方法,那么意味着,必有一个简便方法来判断是否有冠军,因为,两两发生比赛,一个人可能产生多场比赛,但是,我们换成一下思路,什么是冠军,冠军即使唯一没输过的人,所以,当全部人数-输掉的人数=1时,即产生了冠军。此时,分析到这里,我们也可以判断使用set容器,不录入重复。
代码:
#include<iostream> #include<set> #include<string> using namespace std; int main(){ int n; while (cin >> n&&n){ string a, b; set<string> s1, s2; for (int i = 0; i < n; i++){ cin >> a >> b; s1.insert(a); s1.insert(b); s2.insert(b); } if (s1.size() - s2.size() == 1){ cout << "Yes" << endl; } else{ cout << "No" << endl; } } system("pause"); return 0; }