问题 B: 彩灯统计

来源:互联网 发布:org.apache.tiles 编辑:程序博客网 时间:2024/04/27 21:05

问题 B: 彩灯统计

时间限制: 1 Sec  内存限制: 128 MB
提交: 41  解决: 19
[提交][状态][讨论版]

题目描述

儿童乐园有各种颜色的彩灯,小明想要知道哪种颜色的灯数量最多。但是由于数据过于庞大,小明也束手无策,所以他想请聪明如你的ACMer来帮忙。

输入

第一行输入彩灯的数量N(1<= N <= 1000),接下来的N行输入N个字符串表示彩灯的颜色(字符串的长度不超过10,字符串全为小写字母,并且只有一组测试数据)。保证彩灯颜色不超过1000种。

输出

输出这些彩灯中最多的颜色的名字与数量,并用空格隔开(数据保证最多的颜色只有一个)。

样例输入

12redgreenbluewhiteredgreenbluewhiteredgreenbluered

样例输出

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;}


原创粉丝点击