彩灯统计

来源:互联网 发布:徐老师淘宝店好 编辑:程序博客网 时间:2024/04/27 20:07

题目描述

儿童乐园有各种颜色的彩灯,小明想要知道哪种颜色的灯数量最多。但是由于数据过于庞大,小明也束手无策,所以他想请聪明如你的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;
}
原创粉丝点击