description |
|
input |
|
output |
|
sample_input |
|
sample_output |
|
题解:我的第一想法是用map来着,应为首先颜色的种类不确定,其次每个颜色都对应着一个数量;
但是水平不够没能写出来,于是咨询了两个学长,学长告诉我用暴力+数组的方法就可以写出来,也就是定义一个二维字符数组,但是我更喜欢string'类型,于是就有了下边的代码;
code1:
#include <string>
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn=105;
int cnt[maxn];
int main()
{
int n;
while(cin>>n&&n)
{
memset(cnt,0,sizeof cnt);
string s;
string str[maxn];
int num=0;
while(n--)
{
cin>>s;
bool flag=0;
for(int i=0; i<num; i++)
{
if(str[i]==s)
{
cnt[i]++;
flag=1;
break;
}
}
if(!flag)
{
str[num++]=s;
cnt[num]=1;
}
}
int maxn=cnt[0],it=0;
for(int i=0; i<num; i++)
{
if(maxn<cnt[i])
{
maxn=cnt[i];
it=i;
}
}
cout<<str[it]<<endl;
}
return 0;
}
下边的代码是李学长帮忙写的,用的map,我的用map的思路没错,但是能力不够。还是多谢学长和学长们的帮助了,林大的学长们真的很棒;mark一下代码:
code2:
#include <vector>
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
int cmp(pair<string,int> x,pair<string,int> y){
return x.second>y.second;
}
int main(){
int n,i,j;
string s;
while(scanf("%d",&n)!=EOF&&n){
map<string,int> m;
map<string,int>::iterator ite;
vector<pair<string,int> > v;
for(i=0;i<n;i++){
cin>>s;
m[s]++;
}
for(ite=m.begin();ite!=m.end();ite++)
v.push_back(make_pair(ite->first,ite->second));
sort(v.begin(),v.end(),cmp);
cout<<v[0].first<<endl;
}
return 0;
}