还是两个map配合,很强大的组合,这种题做多了就觉得有点水了。 #include <iostream> #include <string> #include <map> using namespace std; map<string,string> ssmap; map<string,int> simap; int main() { int candiNum; cin>>candiNum; getchar(); string str1,str2; for (int i = 0;i < candiNum;i++) { getline(cin,str1); getline(cin,str2); ssmap[str1]=str2; simap[str1]=0; } int voteNum; cin>>voteNum; getchar(); for (int i = 0;i < voteNum;i++) { getline(cin,str1); if (ssmap[str1].size()!=0) { simap[str1]++; } } map<string,int>::iterator it = simap.begin(); int votes = 0; string winner = it->first; for (it++;it != simap.end();it++) { if (it->second > simap[winner]) { winner = it->first; } } for (it = simap.begin();it != simap.end();it++) { if (it->second == simap[winner]&&it->first != winner) { cout<<"tie"<<endl; return 0; } } cout<<ssmap[winner]<<endl; }