刚学完set,准备做个简单题目实践一下。结果半天都WA。
下面指出WA原因。
方法是这样的,把所有输的赢的都插入a1,输的插入a2;
那么如果最后name1-name2=1,则说明只有他没输过,能判断出冠军就是剩下的那个人。
#include<iostream>
#include<set>
#include<string>
using namespace std;
int main()
{
int n;
set<string> name1,name2;
string a1,a2;
while(cin>>n,n)
{
while(n--)
{
cin>>a1>>a2;
name1.insert(a1);
name1.insert(a2);
name2.insert(a2);
}
if(name1.size()-name2.size()==)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return ;
}
结果以上代码WA了。测试多次后,AC代码如下:
#include<iostream>
#include<set>
#include<string>
using namespace std;
int main()
{
int n;
set<string> name1,name2;
string a1,a2;
while(cin>>n,n)
{
while(n--)
{
cin>>a1>>a2;
name1.insert(a1);
name1.insert(a2);
name2.insert(a2);
}
if(name1.size()-name2.size()==)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
name1.clear();
name2.clear();
}
return ;
}
由此可见,良好的编程习惯多么重要。