- 水題
- map 用於儲存字符串出現的次數
- 一開始直接遍歷map 找出最大值輸出,結果就WA 了,原來題目要求說 若有相同的次數要輸出最早在 list 中出現的那個, 而 map 是會自動排序的,所以還需要再加入一個vector來存“順序”, 最後通過遍歷 vector 找出最大值來輸出
#include<iostream>
#include<string>
#include<map>
#include<vector>
using namespace std;
int main()
{
int awards;
while(cin >> awards && awards != 0)
{
map<string, int> film;
map<string, int>::iterator it;
vector<string> v;//沒辦法,題目要求要順序
while(awards--)
{
string awardsName;
cin >> awardsName;
int filmNum;
cin >> filmNum;
while(filmNum--)
{
string temp;
cin >> temp;
v.push_back(temp);
it = film.find(temp);
if(it == film.end())//未出現過
{
film[temp] = 1;
}
else//出現過
{
film[temp]++;
}
}
}
string maxString;
int maxInt = 0;
for(int i = 0; i < v.size(); i++)
{
string temp = v[i];
it = film.find(temp);
if((*it).second > maxInt)//找出現次數最多的
{
maxString = (*it).first;
maxInt = (*it).second;
}
}
cout << maxString << endl;
}
return 0;
}