题目链接:
http://47.93.249.116/problem.php?cid=1479&pi
题目描述
众所周知,由于一些项目经理不是技术出身,项目经理经常和开发不在同一个频道上。于是就提出了一些比较
让人难以接收的需求。比如,要求把标志做成五彩斑斓的颜色,或者要求把主题颜色做成和手机外套一样的颜色。深圳某
公司的一位项目经理就被开发给打了。现在呢,你是一位很惨的开发,项目经理给你提出了很多需求,为了少生事端,你
决定只实现项目经理提出需求次数最多的那些(不保证次数最多的需求唯一),以免全部实现造成冲突。
输入
多实例输入。
第一行一个case,代表测试实例数。(case<=5)
第二行一个n,代表项目经理给你提出的需求数(n<=1000)
接下来n行,每行一个只包含英文字符的字符串s,代表提出的需求( length(s)<=200 )
输出
需求次数最多的字符串,按照输入顺序输出。每个需求占一行。
样例输入
1 6 red black blue black red green
样例输出
red black
题目大意是要统计每个字符串的频率找出频最高的一个或多个
解题思路:可以定义一个结构体, 每个结构体包含一个字符串和变量sum,用sum来记录频率;
-
#include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> using namespace std; struct stu{ string a; int sum; }str[1009]; bool cmp(stu p1,stu p2) { return p1.sum >p2.sum ; } int main() { int t,n; cin>>t; while(t--) { cin>>n; for(int i=0;i<n;i++) { cin>>str[i].a ; str[i].sum =1; } for(int i=0;i<n-1;i++) { for(int j=i+1;j<n;j++) { if(str[i].a ==str[j].a ) { str[i].sum ++; } } } int max=str[0].sum ; for(int i=1;i<n;i++) { if(str[i].sum >max) { max=str[i].sum ; } } for(int i=0;i<n;i++) { if(str[i].sum ==max) { cout<<str[i].a<<endl; } } } return 0; }