HDU - 1004 Let the Balloon Rise
注意,这样写出来的代码,flag数组里面的数量要比实际字符串数量少一,但对此答案无影响,需要的时候加一个一即可
#include"iostream"
#include"stdio.h"
#include"string.h"
using namespace std;
int max(int flag[1050],int N)
{
int i;
int max=flag[0];
int maxi=0;
for(i=1;i<N;i++)
{
if(flag[i]>max)
{
max=flag[i];
maxi=i;
}
}
return maxi;
}
int main(int argc, char *argv)
{
int N;
while((scanf("%d",&N))&&N)
{
int i;
char string[N][20];//给每个字符串标出前缀N
int flag[1050]={0};//初始化标记
for(i=0;i<N;i++)
scanf("%s",string[i]);//输入
for(i=0;i<N;i++)
{
if(string[i][0]!=0)
for(int j=i+1;j<N;j++)
{
if(strcmp(string[i],string[j])==0)//比较是否相等
{
flag[i]+=1;
string[j][0]=0;//相等的话对应flag+1,后面的相同
}
}
}
int maxflag=max(flag,N);//找出flag最多的字符串,就是出现次数最多的
cout<<string[maxflag]<<endl;
}
return 0;
}