【ACM】hdu_1004_Let the Balloon Rise
Let the Balloon Rise
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 57556 Accepted Submission(s): 21037
This year, they decide to leave this lovely job to you.
A test case with N = 0 terminates the input and this test case is not to be processed.
hdu_1004_Let the Balloon Rise_201307271045.c
#include <stdio.h>
#include <string.h>
int main()
{
char str[1010][18];
int n;
while(scanf("%d",&n),n)
{
int i,j,k,m=0,num=0;
char str1[18],str2[18];
for(i=0;i<n;i++)
{
gets(str[i]);
}
for(j=1;j<n;j++)
for(i=0;i<n-j;i++)
if(strcmp(str[i],str[i+1])>0)
{
strcpy(str1,str[i]);
strcpy(str[i],str[i+1]);
strcpy(str[i+1],str1);
}
strcpy(str2,str[0]);
for(i=0;i<n;i++)
{
if(strcmp(str2,str[i])==0)
num++;
else
{
strcpy(str2,str[i]);
num=1;
if(num>m)
{
m=num;
k=i-1;
}
}
}
if(num>m)
{
m=num;
k=i-1;
}
printf("%s\n",str[k]);
}
return 0;
}
//超时
//参考代码如下:
#include <string.h>
int n, i, j, t, max, num[1000];
char color[1000][16];
while(scanf("%d", &n) != EOF){
if(n){
num[0]=0;
scanf("%s", color[0]);
for(i=1; i <n; i++){
num[i]=0;
scanf("%s", color[i]);
for(j=0; j <i-1; j++)
if(strcmp(color[i], color[j])==0) num[i] +=1;
}
max=num[0];
t=0;
for(i=1; i <n; i++)
if(max <num[i]) {max =num[i]; t=i;}
printf("%s\n",color[t]);
}
}
}
#include <string.h>
int main()
{
char str[1010][18];
int n;
while(scanf("%d",&n),n)
{
int i,j,k,max;
int num[1010]={0};
k=max=0;
for(i=0;i<n;i++)
{
scanf("%s",str[i]);
for(j=0;j<i;j++)
if(strcmp(str[i],str[j])==0)
num[i]++;
if(num[i]>max)
{
max=num[i];
k=i;
}
}
printf("%s\n",str[k]);
}
return 0;
}