42:出书最多
42:出书最多
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
-
假定图书馆新进了m(10 ≤ m ≤ 999)本图书,它们都是由n(1 ≤ n ≤ 26)个作者独立或相互合作编著的。假设m本图书编号为整数(1到999),作者的姓名为字母('A'到'Z'),请根据图书作者列表找出参与编著图书最多的作者和他的图书列表。
- 输入
- 第一行为所进图书数量m,其余m行,每行是一本图书的信息,其中第一个整数为图书编号,接着一个空格之后是一个由大写英文字母组成的没有重复字符的字符串,每个字母代表一个作者。输入数据保证仅有一个作者出书最多。
- 输出
- 输出有多行:
第一行为出书最多的作者字母;
第二行为作者出书的数量;
其余各行为作者参与编著的图书编号(按输入顺序输出)。 - 样例输入
-
11 307 F 895 H 410 GPKCV 567 SPIM 822 YSHDLPM 834 BXPRD 872 LJU 791 BPJWIA 580 AGMVY 619 NAFL 233 PDJWXK
- 样例输出
-
P 6 410 567 822 834 791 233
- 来源
- 北京大学 计算概论 06 心理及信管 期末考试
-
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 int a[10001]; 6 int now; 7 int sl[10001]; 8 struct node 9 { 10 int a;//编号 11 char b[1001];//作者 12 int lb; 13 }gs[1001]; 14 int maxn=-1; 15 char ans; 16 int main() 17 { 18 int n; 19 cin>>n; 20 for(int i=1;i<=n;i++) 21 { 22 cin>>gs[i].a; 23 //gets(gs[i].b); 24 scanf("%s",&gs[i].b); 25 for(int j=0;j<strlen(gs[i].b);j++) 26 { 27 sl[gs[i].b[j]]++; 28 if(sl[gs[i].b[j]]>maxn) 29 { 30 ans=gs[i].b[j]; 31 maxn=sl[gs[i].b[j]]; 32 } 33 } 34 } 35 cout<<ans<<endl; 36 cout<<maxn<<endl; 37 for(int i=1;i<=n;i++) 38 { 39 for(int j=0;j<strlen(gs[i].b);j++) 40 { 41 if(gs[i].b[j]==ans) 42 { 43 cout<<gs[i].a<<endl; 44 } 45 } 46 } 47 48 return 0; 49 }
作者:自为风月马前卒
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。