• Openjudge-NOI题库-出书最多


    描述

    假定图书馆新进了m(10 ≤ m ≤ 999)本图书,它们都是由n(2 ≤ 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 <stdio.h>
     2 #include <string.h>
     3 struct book
     4 {
     5     int num;
     6     char writer[300];
     7 };
     8 int main()
     9 {
    10     int m,i,j;
    11     int xiabiao;//出书最多作者下标 
    12     int large;//出书最多作者出的书 
    13     char large2;//出书最多作者名字 
    14     int flag[26];//统计每个作者名字出现的个数 
    15     struct book a[999];//结构体,存储编号,作者姓名 
    16     scanf("%d",&m);
    17     for(i=0;i<26;i++)//初始化 
    18     {
    19         flag[i]=0;
    20     }
    21     for(i=0;i<m;i++)//输入编号、作者 
    22     {
    23         scanf("%d%s",&a[i].num,&a[i].writer);
    24     }    
    25     for(i=0;i<m;i++)//统计每个作家名字出现次数 
    26     {
    27         for(j=0;j<strlen(a[i].writer);j++)
    28         {
    29             flag[a[i].writer[j]-65]++;
    30         }
    31     }
    32     large=flag[0];    
    33     for(i=0;i<26;i++)//找出出书最多的作家 
    34     {
    35         if(flag[i]>large)//如果发现一个比目前还要大的,更新 
    36         {
    37             xiabiao=i;
    38             large=flag[i];
    39         }        
    40     } 
    41     large2=xiabiao+65;
    42     printf("%c
    %d
    ",large2,large);//输出出书最多作家名字、著作篇数 
    43     for(i=0;i<m;i++)
    44     {
    45         for(j=0;j<strlen(a[i].writer);j++)
    46         {
    47             if(a[i].writer[j]==large2) 
    48             {
    49                 printf("%d
    ",a[i].num);
    50                 break; 
    51             }            
    52         }
    53     }
    54     return 0;
    55 }
  • 相关阅读:
    ThingJS,轻松切换3D场景!
    ThingJS,以可视化的方式解决管线难题
    可视化能成为物联网“最后一公里”么?
    ThingJS 新手教程之初识在线开发(一)
    threejs和ThingJS的区别,ThingJS收费么?
    带你了解为什么许多公司都会选择使用ThingJS制作Demo进行投标!
    物联网可视化平台有哪些?ThingJS怎么样?
    ThingJS园区搭建工具模模搭介绍
    ThingJS,物联网可视化方面的专家平台!
    ajax的post的方法,不报错,就是不输出信息
  • 原文地址:https://www.cnblogs.com/geek-007/p/4940897.html
Copyright © 2020-2023  润新知