5 green red blue red red 3 pink orange pink 0
red pink
ZJCPC2004
解题分析:
首先说有两种做法,网上的大多数做法是用C语言做的,主要是定义一个color[][],二维数组和 count[]来分别对每次出现的颜色进行记录。
这里我用的是C++的string 只需要定义color[]; 和 count []; 因为在c++ 中是有string类型,一个数组的元素可以是字符串。
这里还要提示的是数据是Each test case starts with a number N (0 < N <= 1000),因此要注意定义数组大小的时候要定义为1001而不是1000.
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#define MAXN 1000
using namespace std;
int main()
{
int n, i, j;
while(scanf("%d", &n) && n!= 0)
{
int count[MAXN] = {0};
string str[MAXN], color;
int max=0;
for(i = 0; i < MAXN; i++)
str[i]= "";
for(i=1; i <= n; i++)
{
cin >> color;
for(j=1; j < i; j++)
{
if(str[j].compare(color) == 0)
{
count[j]++;
break;
}
}
if(j==i)
{
str[i]=color;
count[i]++;
}
}
for(i=1; i<=n; i++)
{
if(count[i] > count[max])
{
max = i;
}
}
cout << str[max] << endl;
}
return 0;
}