(http://acm.split.hdu.edu.cn/showproblem.php?pid=1004)
#include <iostream>
#include<cstring>
#include<algorithm>
using namespace std;
//颜色结构,num用来计算每种颜色出现的次数
struct Color{
int num;
char color[16];
};
Color input[1000] = {0,""};
//按降序排序
int int_cmp(const void *a, const void *b)
{
return *(int *)b - *(int *)a;
}
int main()
{
//freopen("E:\\in.txt","r",stdin);
int n,i,j;
char temp[16];
while(cin>>n,n!=0)
{
int count=0;
bool exist;
for(i=0; i<n; i++){
//每读入一个颜色,就判断是否之前出现过,如果出现过,就把exist标记为true,并把计数+1,然后立即break出循环
cin >> temp;
exist = false;
for(j=0; j<count; j++){
if(strcmp(temp,input[j].color) == 0){//在所有读入不同的颜色中查找
exist = true;
input[j].num++;
break;
}
}
//如果不存在,就把这种颜色加到数组中去,并使计数初始为0
if(!exist) {
//input[count].color = temp;
strcpy(input[count].color,temp);
input[count].num = 1;
count++; //表示读入不同颜色的个数
}
}
//对数组进行快速排序,排在第一个的就是数量最多的颜色,最后打印
qsort(input,count,sizeof(Color),int_cmp); //颜色个数从大到小排序
cout << input[0].color << endl;
}
return 0;
}