NOIP学习之综合应用:163.出书最多

该编程问题要求找出图书馆新进图书中,贡献书籍最多的作者及其著作的详细信息。输入包含图书数量和每本书的作者,输出为最多书籍的作者名字、数量及对应的图书编号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试链接
总时间限制: 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

#include<iostream>
#include<cstring>
using namespace std;
char c;
string str;
int no,len,m,a[10000][100],ch[27];
int main(){
	int max=0;
	scanf("%d",&m);
	for(int i=0;i<m;i++)
	{
		cin>>no>>str;
		len=str.size();
		for(int j=0;j<len;j++)
		{
			a[str[j]-'A'][++ch[str[j]-'A']]=no;			
		}
	}
	for(int i=0;i<26;i++)
	{
		if(ch[i]>max)
		{
			max=ch[i];
			c=char(i+'A');
		}
	}
	cout<<c<<endl;
	cout<<max<<endl;
	for(int i=1;i<=max;i++)
	{
		cout<<a[c-'A'][i]<<endl;
	}
	return 0;				
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值