首页 > 学院 > 开发设计 > 正文

出书最多

2019-11-11 01:51:18
字体:
来源:转载
供稿:网友
总时间限制: 1000ms 内存限制: 65536kB描述

假定图书馆新进了m(10 ≤ m ≤ 999)本图书,它们都是由n(1 ≤ n ≤ 26)个作者独立或相互合作编著的。假设m本图书编号为整数(1到999),作者的姓名为字母('A'到'Z'),请根据图书作者列表找出参与编著图书最多的作者和他的图书列表。

输入第一行为所进图书数量m,其余m行,每行是一本图书的信息,其中第一个整数为图书编号,接着一个空格之后是一个由大写英文字母组成的没有重复字符的字符串,每个字母代表一个作者。输入数据保证仅有一个作者出书最多。输出输出有多行: 第一行为出书最多的作者字母; 第二行为作者出书的数量; 其余各行为作者参与编著的图书编号(按输入顺序输出)。样例输入
11307 F895 H410 GPKCV567 SPIM822 YSHDLPM834 BXPRD872 LJU791 BPJWIA580 AGMVY619 NAFL233 PDJWXK样例输出
P6410567822834791233 
本题考查的是对字符串的运用及提取字符和循环的综合应用,下面附上ac代码。
#include<stdio.h>#include<string.h>int main(){    int n,a[1001]={0},s[27]={0},i,j,maxi=-1,k,l;    char b[1001][27]={0};    scanf("%d",&n);    for(i=1;i<=n;i++)     scanf("%d %s",&a[i],&b[i]);   for(i=1;i<=n;i++)   {        l=strlen(b[i]);       for(j=0;j<l;j++)       {           s[b[i][j]-'A']++;       }   }   for(i=0;i<26;i++)   {       if(s[i]>maxi)       {           maxi=s[i];           k=i;       }   }   printf("%c/n",'A'+k);   printf("%d/n",maxi);   for(i=1;i<=n;i++)   {       l=strlen(b[i]);       for(j=0;j<l;j++)       {           if(b[i][j]-'A'==k)           {                printf("%d/n",a[i]);           }       }   }   return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表