0
已解决
4877 统计最多的颜色
经验值:1200 时间限制:1000毫秒 内存限制:128MB
题目描述 Description
今天是运动会,操场上插了n面迎风飘扬的旗帜。旗帜的颜色是五颜六色的,现在酷町猫和她的小伙伴们想知道,哪种颜色的旗帜数量最多。
输入描述 Input Description
多组测试数据,对于每组测试数据
第一行,一个正整数n,表示各种颜色的旗帜数量
接下来n行, 每行一个小写字母组成的字符串,表示一种颜色
输出描述 Output Description
对于每组测试数据,单独输出一行数量最多的颜色,如果有多个颜色数量满足条件,则输出字典序最小的一个
样例输入 Sample Input
5
red
red
yellow
red
green
2
yellow
yellow
样例输出 Sample Output
red
yellow
数据范围及提示 Data Size & Hint
n<=1000
#include<bits/stdc++.h>
using namespace std;
int n;
string a[1005];
bool boo(string a,string b){
if(a.size()!=b.size()){
return a.size()<b.size();
}
return a<b;
}
int main(){
while(cin>>n){
bool f[1005];
int maxf=0;
string tmp;
memset(f,0,sizeof(f));
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n,boo);
for(int i=1;i<=n;i++){
if(a[i]==a[i-1]){
f[i]=f[i-1]+1;
}else{
f[i]=1;
}
if(f[i]>maxf){
maxf=f[i];
tmp=a[i];
}
}
cout<<tmp<<endl;
}
return 0;
}
WA 10分
拿错啦!!!
熊潇然在2022-10-21 14:22:24追加了内容
哪错啦!!!
熊潇然在2022-10-21 16:54:09追加了内容
#include<bits/stdc++.h>
using namespace std;
int n;
string a[1005];
int f[1005];
bool boo(string a,string b){
if(a.size()!=b.size()){
return a.size()<b.size();
}
return a<b;
}
int main(){
while(cin>>n){
int maxf=0;
string tmp;
memset(f,0,sizeof(f));
for(int i=1;i<=n;i++){
cin>>a[i];
f[a[i]]++;(这里报错)
}
for(int i=1;i<=n;i++){
if(f[i]==maxf){
cout<<a[i];
}
}
}
return 0;
}
熊潇然在2022-10-22 10:40:06追加了内容
#include<bits/stdc++.h>
using namespace std;
int n;
string a[1005];
int f[1005];
bool boo(string a,string b){
if(a.size()!=b.size()){
return a.size()<b.size();
}
return a<b;
}
int main(){
while(cin>>n){
int maxf=0;
string tmp;
memset(f,0,sizeof(f));
for(int i=1;i<=n;i++){
cin>>a[i];
f[a[i]]++;(报错)
maxf=max(maxf,f[a[i]]);(报错)
}
sort(a+1,a+1+n,boo);
for(int i=1;i<=n;i++){
if(f[a[i]]==maxf){(报错)
cout<<a[i];
}
}
}
return 0;
}
熊潇然在2022-10-22 10:40:12追加了内容
#include<bits/stdc++.h>
using namespace std;
int n;
string a[1005];
int f[1005];
bool boo(string a,string b){
if(a.size()!=b.size()){
return a.size()<b.size();
}
return a<b;
}
int main(){
while(cin>>n){
int maxf=0;
string tmp;
memset(f,0,sizeof(f));
for(int i=1;i<=n;i++){
cin>>a[i];
f[a[i]]++;(报错)
maxf=max(maxf,f[a[i]]);(报错)
}
sort(a+1,a+1+n,boo);
for(int i=1;i<=n;i++){
if(f[a[i]]==maxf){(报错)
cout<<a[i];
}
}
}
return 0;
}
0
0
0
0
0
0
0
你想错了,我刚刚做了一遍,不是int[string] 是int[char]
桶你没学过的话,看这里https://blog.csdn.net/Passerby_XX/article/details/123147928
