Sample Input
5 green red blue red red 3 pink orange pink 0
Sample Output
red pink
#include<iostream>
#include<stdio.h>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
int i,j,n,a[1010];//为每一个字符串都设置一个计数数组
char s[1010][16];
while(cin>>n)
{
if(n==0) break;
for(i=0; i<n; i++)
scanf("%s",s[i]);
memset(a,0,sizeof(a));
for(i=0; i<n; i++)//从上到下遍历,遇到相同字符串就计数++
{
for(j=i+1; j<n; j++)
{
if(strcmp(s[i],s[j])==0)
{
a[i]++;
}
}
}
int k;
int max_count=-10;
for(i=0; i<n; i++)//找到其中计数最多的max
{
if(a[i]>max_count)
{
k=i;
max_count=a[i];
}
}
cout<<s[k]<<endl;
}
}
下面是利用C++中的控制方法进行的输入输出处理
#include<iostream>
#include<stdio.h>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
int i,j,n,a[1010];
string s[1010];//定义部分的区别
while(cin>>n)
{
if(n==0) break;
for(i=0; i<n; i++)
cin>>s[i];
memset(a,0,sizeof(a));
for(i=0; i<n; i++)
{
for(j=i+1; j<n; j++)
{
if(s[i]==s[j])//比较时的简便
{
a[i]++;
}
}
}
int k;
int max_count=-10;
for(i=0; i<n; i++)
{
if(a[i]>max_count)
{
k=i;
max_count=a[i];
}
}
cout<<s[k]<<endl;
}
}
定义部分的区别
while(cin>>n)
{
if(n==0) break;
for(i=0; i<n; i++)
cin>>s[i];
memset(a,0,sizeof(a));
for(i=0; i<n; i++)
{
for(j=i+1; j<n; j++)
{
if(s[i]==s[j])//比较时的简便
{
a[i]++;
}
}
}
int k;
int max_count=-10;
for(i=0; i<n; i++)
{
if(a[i]>max_count)
{
k=i;
max_count=a[i];
}
}
cout<<s[k]<<endl;
}
}