42:出书最多

2018-06-17 23:04:48来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

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 }

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:poj 2892---Tunnel Warfare(线段树单点更新、区间合并)

下一篇:[C++学习笔记] const限定符