题目描述
儿童乐园有各种颜色的彩灯,小明想要知道哪种颜色的灯数量最多。但是由于数据过于庞大,小明也束手无策,所以他想请聪明如你的ACMer来帮忙。
输入
第一行输入彩灯的数量N(1<= N <= 1000),接下来的N行输入N个字符串表示彩灯的颜色(字符串的长度不超过10,字符串全为小写字母,并且只有一组测试数据)。保证彩灯颜色不超过1000种。
输出
输出这些彩灯中最多的颜色的名字与数量,并用空格隔开(数据保证最多的颜色只有一个)。
样例输入
12
red
green
blue
white
red
green
blue
white
red
green
blue
red
样例输出
red 4
#include <stdio.h>
#include <string.h>//题意没有说明测试数据里颜色种类一共多少哦。可能5种颜色,也可能1000种颜色。
int main()
{
char a[10008][18],maxcolor[18],temp[18];
int b[10008]={0},max,i,l,n;
scanf("%d",&n);
scanf("%s",&temp);//先读取第一个字符串
n--;
strcpy(a[0],temp);//以第一个字符串为样本,记录
strcpy(maxcolor,a[0]);
b[0]=1;//第一种字符串的次数
max=b[0];//记录出现次数的最大值
l=1;//当前不同字符种数
while(n--)//逐个对比
{
scanf("%s",&temp);
for(i=0;i<l;i++)//循环当前已知的不同字符种数l。
{
if(strcmp(temp,a[i])==0)//strcmp函数,返回值为0说明两个字符串相等 这个if语句其实可以写到for循环里去哦。
{
b[i]++;//当前次数
if(max<b[i])//找到当前出现次数最多的字符串。
{
max=b[i];//记录次数
strcpy(maxcolor,temp);//复制字符串
}
break;
}
}
if(i==l)//说明当前没有与它相同的,则新建。
{
strcpy(a[l],temp);
b[l]=1;
l++;//种类数+1
}
}
printf("%s %d\n",maxcolor,max);
return 0;
}