博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言 · 色盲的民主
阅读量:7168 次
发布时间:2019-06-29

本文共 2443 字,大约阅读时间需要 8 分钟。

算法提高 色盲的民主  
时间限制:1.0s   内存限制:256.0MB
    
问题描述
  n个色盲聚在一起,讨论一块布的颜色。尽管都是色盲,却盲得各不相同。每个人都有自己的主张,争论不休。最终,他们决定采取民主投票的方式决定布的颜色,不管布同不同意。某种颜色用字符串表示(字符串为颜色单词或词组,也就是可能有被空格隔开的两个单词组成的颜色词组),只要字符串不同,程序即判断颜色不同。现在给出这n个人所选择的颜色,输出最有可能的颜色(也就是获得投票最多的颜色),如果有多个颜色获得了最多的投票,则将它们按字典序分行全部输出。
输入格式
  第一行一个正整数n,表示色盲的人数
  接下来n行,每行一句话
输出格式
  若干行,获得投票最多的颜色,按字典序输出
样例输入
5
red
blue
black
black
blue
样例输出
black
blue
数据规模和约定
  n<=1000
  颜色单词最多20个字符,只包含小写字母或者空格
  对于char s[20],由于cin >> s是读取到空格处便会结束,也就是对于light red,用cin只能输入light。如果要整个输入一行,则使用cin.getline(s, 20),其中20为这一行的最大长度,也就是你的s的容量,如果容量为30,则cin.getline(s, 30)。
  另外,你在cin>>n以后cin.getline(s,30)应该会得到一个空字符串,这是因为整数n后面的换行符还未被输入。
 
作者注释:当看到“字典排序”,就想到用结构体,用qsort来做,还是掌握的不牢固,在大牛的指导下结合之前做过的题完成了代码。思路和细节看代码注释。
1 #include
2 #include
3 #include
4 #include
5 #include
6 /*定义一个结构体:包括定义颜色的名称及其个数*/ 7 typedef struct Color{ 8 char color[50];//不同的颜色 9 int num;//每个颜色的个数 10 }col;11 int cmp(const void *a,const void *b){12 col c = *(col*)a;13 col d = *(col*)b;14 //按数量的多少对颜色名称进行字典排序 15 if(c.num == d.num){16 return strcmp(c.color,d.color);17 }else{18 return d.num - c.num;19 }20 }21 int main(){22 col co[1000];//定义结构体数组 23 char color[20];//颜色单词最多20个字符24 int re=0;//表需要排序的颜色个数,初值为0 25 int n;//数据组数 26 scanf("%d",&n);27 for(int i=0;i

 上述过程在思路上没有问题,但是对于本题提交是不通过的——错在数据的处理的细节上。

%s:格式化字符串,不能接收回车换行空格符;

gets():用于从读入一个整行,以'\n'或EOF结束;

getchar():用于读入一个字符,并返回这个字符.

对于本题:输入n后有一个换行,而且每个颜色后都有一个换行,因此要注意用getchar()来接收换行,用gets(),接收数据。

1 /* 2     注意:%s不能接收空格、回车; 3     getchar()可以消除回车、空格符; 4     gets()一般与getchar()配合使用。  5 */  6 #include
7 #include
8 #include
9 #include
10 #include
11 /*定义一个结构体:包括定义颜色的名称及其个数*/12 typedef struct Color{13 char color[50];//不同的颜色 14 int num;//每个颜色的个数 15 }col;16 int cmp(const void *a,const void *b){17 col c = *(col*)a;18 col d = *(col*)b;19 //按数量的多少对颜色名称进行字典排序 20 if(c.num == d.num){21 return strcmp(c.color,d.color);22 }else{23 return d.num - c.num;24 }25 }26 int main(){27 col co[2000];//定义结构体数组 28 char color[30];//颜色单词最多20个字符29 int re=0;//表需要排序的颜色个数,初值为0 30 int n;//数据组数 31 scanf("%d",&n);32 getchar();//输入n后有一个回车,用getchar()处理掉 33 for(int i=0;i

 

 

 

转载地址:http://gxmwm.baihongyu.com/

你可能感兴趣的文章
Vert.x系列(四)-- HAManager源码分析
查看>>
Java 8 中的 Streams API 详解
查看>>
搭建安全的Web服务器
查看>>
初学者
查看>>
小叙安装CentOS 6.5
查看>>
LVM 扩展/减缩/镜像 【有图有真相】
查看>>
Live Migrate 操作 - 每天5分钟玩转 OpenStack(42)
查看>>
我的友情链接
查看>>
免费为网站加上HTTPS
查看>>
银河麒麟操作系统上配置Bond(二)使用ifenslave方式
查看>>
Python高阶函数
查看>>
Xen虚拟化
查看>>
spring 数据连接池
查看>>
免软驱 安装 windows server 2003 RAID驱动 -GenerateDriverDiskISO
查看>>
tomcat 配置 字符串UTF-8 支持中文请求路径
查看>>
jstl jsp 计算相加
查看>>
spring junit使用疑问
查看>>
Protostar format2
查看>>
WEB 组件开发相关记录
查看>>
【Eclipse】 类似syso快捷键补全代码的自定义
查看>>