首页 > 代码库 > HDU 2094解题报告

HDU 2094解题报告

刚学完set,准备做个简单题目实践一下。结果半天都WA。

下面指出WA原因。

方法是这样的,把所有输的赢的都插入a1,输的插入a2;

那么如果最后name1-name2=1,则说明只有他没输过,能判断出冠军就是剩下的那个人。

 1 #include<iostream> 2 #include<set> 3 #include<string> 4 using namespace std; 5 int main() 6 { 7     int n; 8     set<string> name1,name2; 9     string a1,a2;10     while(cin>>n,n)11     {12         while(n--)13         {14              cin>>a1>>a2;15              name1.insert(a1);16              name1.insert(a2);17              name2.insert(a2);18         }19         if(name1.size()-name2.size()==1)20             cout<<"Yes"<<endl;21         else22             cout<<"No"<<endl;23     }24     return 0;25 }

结果以上代码WA了。测试多次后,AC代码如下:

 1 #include<iostream> 2 #include<set> 3 #include<string> 4 using namespace std; 5 int main() 6 { 7     int n; 8     set<string> name1,name2; 9     string a1,a2;10     while(cin>>n,n)11     {12         while(n--)13         {14              cin>>a1>>a2;15              name1.insert(a1);16              name1.insert(a2);17              name2.insert(a2);18         }19         if(name1.size()-name2.size()==1)20             cout<<"Yes"<<endl;21         else22             cout<<"No"<<endl;23         name1.clear();24         name2.clear();25     }26     return 0;27 }

由此可见,良好的编程习惯多么重要。

HDU 2094解题报告