题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1004
我的思路是将颜色一个一个保存到容器中,然后排序,这样相同的就一定会在一起,然后在一个一个比较,找出数目最多的那个
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
int n;
while(cin>>n&&n!=0)
{
int i,j=1;
vector<string> vec;
vec.clear();
string s;
for(i=0;i<n;i++)
{
cin>>s;
vec.push_back(s);
}
sort(vec.begin(),vec.end());
int k=0;
string str;
for(i=1;i<vec.size();i++)
{
if(vec[i]==vec[i-1])
{
j++;
}
else
{
if(j>k)
{
k=j;
str=vec[i-1];
}
j=1;
}
}
if(j>k) //最后要再比一次,因为如果最后两个相同的话,则不会进入else中比较,所以在for循环外与此时的 k 比较,
{
k=j;
str=vec[i-1];
}
cout<<str<<endl;
}
return 0;
}