假定圖書館新進了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;}
新聞熱點
疑難解答