http://acm.hdu.edu.cn/showproblem.php?pid=1004
题目意思:就是给n个字符串,在这些字符串中求哪个哪个字符串出现最多得那个字符串
思路:这个题可以用map,也可以不用map是个神奇的东西
//map容器的使用
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<map>
using namespace std;
string s[1005],ss;
map<string,int>p;
int main()
{
int i,j,n;
while(~scanf("%d",&n),n)
{
p.clear();//清空map数组为0
for(i=0; i<n; i++)
{
cin>>s[i];
p[s[i]]++;
}
int max=0;
for(map<string,int>::iterator it=p.begin();it!=p.end();it++)
if(it->second>max)
{
max=it->second;
ss=it->first;
}
}
cout<<ss<<endl;
}
return 0;
}
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
bool cmp(const string &a,const string &b)
{
return a<b;
}
int main()
{
int i,n;
string colors[1001];
while(cin>>n&&n)
{
for(i=0;i<n;i++)
cin>>colors[i];
sort(colors,colors+n,cmp);
int cnt = 1,maxx=1;
string c = colors[0];
for(i=1;i<n;i++)
{
if(colors[i]==colors[i-1])
cnt++;
else
{
if(cnt>maxx)
{
c = colors[i-1];
maxx = cnt;
}
cnt = 1;
}
}
if(cnt>maxx)
c = colors[n-1];
cout<<c<<endl;
}
return 0;
}