admin管理员组

文章数量:1130349

蓝桥杯 算法提高 色盲的民主



算法提高 色盲的民主   时间限制: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后面的换行符还未被输入。

#include<iostream>
#include<string>
#include<algorithm>
#include<cstring>     //memset函数头文件 
using namespace std;
int main()
{int n,i,j;cin >>n;string s[n];getchar();          //弄掉输入n时的换行,不然会出错 for(i=0;i<n;i++)getline(cin,s[i]); //用getline能把空格也能读入,如dls djsk为一个字符串 int flag[n];        //用来标记 memset(flag,0,sizeof(flag)); //全部初始化为0 int max=0;for(i=0;i<n;i++){    //先找到所有字符串中数量最大的值max; int k=1,flagi=0;if(!flag[i]) {        flag[i]=1; for(j=i+1;j<n;j++){if(s[i]==s[j]){flag[j]=1;    //把相等的串标记,免得重复查询 k++;         flagi=1;			}}if(max<=k&&flagi==1)max=k;           }}//从上个循环已经知道相同串的最大数量为max,接下来只要找到相同串数为max 的就好了。 memset(flag,0,sizeof(flag)); //重新全部初始化为0 string st[max];int maxi,w=0;for(i=0;i<n;i++){         //再找一次,如果相同字符串的数量为max ,把他保存新的字符串数组。 int k=1,flagi=0;if(!flag[i]) {flag[i]=1; for(j=i+1;j<n;j++){if(s[i]==s[j]){flag[j]=1;k++;maxi=i;     //保留下标 }}if(k==max){        st[w++]=s[maxi];   //如果k==max,maxi是原来的s[]的字符串的下标.,把原来的数量最大的串保存到新的st[]中。 }}}sort(st,st+w);        //对新串排序。 for(i=0;i<w;i++)cout <<st[i]<<endl;return 0;
}
给出测试点:
100
yellow
springgreen
plum
peru
powderblue
wheat
black
springgreen
scarlet
slategray
shocking pink
blue red
beige
sapphire
brown
rosybrown
black
cream
salmon
scarlet
peachpuff
red
slateblue
palegreen
teal
turquoise blue
turquoise blue
saddlebrown
seashell
salmon
tomato
palegoldenrod
sapphire
steelblue
purple
salmon pink
sienna
whitesmoke
skyblue
offwhite
salmon
yellow
slategray
salmon
seashell
black
tomato
papayawhip
rubine
saddlebrown
winered
pansy
blue red
rosybrown
palevioletred
plum
wheat
sienna
whitesmoke
offwhite
thistle
papayawhip
seagreen
seashell
springgreen
silver
brown
royalblue
royalblue
paleturquoise
peru
pink
powderblue
steelblue
white
tan
scarlet
rubine
seashell
thistle
purple
sapphire
violet
navy
pink
teal
peachpuff
rubine
sandybrown
smoky gray
shocking pink
peru
palegreen
plum
palevioletred
sapphire
red
rosybrown
thistle
grey
输出:    salmon
sapphire
seashell


算法提高 色盲的民主   时间限制: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后面的换行符还未被输入。

蓝桥杯 算法提高 色盲的民主



算法提高 色盲的民主   时间限制: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后面的换行符还未被输入。

#include<iostream>
#include<string>
#include<algorithm>
#include<cstring>     //memset函数头文件 
using namespace std;
int main()
{int n,i,j;cin >>n;string s[n];getchar();          //弄掉输入n时的换行,不然会出错 for(i=0;i<n;i++)getline(cin,s[i]); //用getline能把空格也能读入,如dls djsk为一个字符串 int flag[n];        //用来标记 memset(flag,0,sizeof(flag)); //全部初始化为0 int max=0;for(i=0;i<n;i++){    //先找到所有字符串中数量最大的值max; int k=1,flagi=0;if(!flag[i]) {        flag[i]=1; for(j=i+1;j<n;j++){if(s[i]==s[j]){flag[j]=1;    //把相等的串标记,免得重复查询 k++;         flagi=1;			}}if(max<=k&&flagi==1)max=k;           }}//从上个循环已经知道相同串的最大数量为max,接下来只要找到相同串数为max 的就好了。 memset(flag,0,sizeof(flag)); //重新全部初始化为0 string st[max];int maxi,w=0;for(i=0;i<n;i++){         //再找一次,如果相同字符串的数量为max ,把他保存新的字符串数组。 int k=1,flagi=0;if(!flag[i]) {flag[i]=1; for(j=i+1;j<n;j++){if(s[i]==s[j]){flag[j]=1;k++;maxi=i;     //保留下标 }}if(k==max){        st[w++]=s[maxi];   //如果k==max,maxi是原来的s[]的字符串的下标.,把原来的数量最大的串保存到新的st[]中。 }}}sort(st,st+w);        //对新串排序。 for(i=0;i<w;i++)cout <<st[i]<<endl;return 0;
}
给出测试点:
100
yellow
springgreen
plum
peru
powderblue
wheat
black
springgreen
scarlet
slategray
shocking pink
blue red
beige
sapphire
brown
rosybrown
black
cream
salmon
scarlet
peachpuff
red
slateblue
palegreen
teal
turquoise blue
turquoise blue
saddlebrown
seashell
salmon
tomato
palegoldenrod
sapphire
steelblue
purple
salmon pink
sienna
whitesmoke
skyblue
offwhite
salmon
yellow
slategray
salmon
seashell
black
tomato
papayawhip
rubine
saddlebrown
winered
pansy
blue red
rosybrown
palevioletred
plum
wheat
sienna
whitesmoke
offwhite
thistle
papayawhip
seagreen
seashell
springgreen
silver
brown
royalblue
royalblue
paleturquoise
peru
pink
powderblue
steelblue
white
tan
scarlet
rubine
seashell
thistle
purple
sapphire
violet
navy
pink
teal
peachpuff
rubine
sandybrown
smoky gray
shocking pink
peru
palegreen
plum
palevioletred
sapphire
red
rosybrown
thistle
grey
输出:    salmon
sapphire
seashell


算法提高 色盲的民主   时间限制: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后面的换行符还未被输入。

本文标签: 蓝桥杯 算法提高 色盲的民主