• 04:垂直直方图


    4:垂直直方图

    总时间限制: 
    1000ms
     
    内存限制: 
    65536kB
    描述

    输入4行全部由大写字母组成的文本,输出一个垂直直方图,给出每个字符出现的次数。注意:只用输出字符的出现次数,不用输出空白字符,数字或者标点符号的输出次数。

    输入
    输入包括4行由大写字母组成的文本,每行上字符的数目不超过80个。
    输出
    输出包括若干行。其中最后一行给出26个大写英文字母,这些字母之间用一个空格隔开。前面的几行包括空格和星号,每个字母出现几次,就在这个字母的上方输出一个星号。注意:输出的第一行不能是空行。
    样例输入
    THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.
    THIS IS AN EXAMPLE TO TEST FOR YOUR
    HISTOGRAM PROGRAM.
    HELLO!
    
    样例输出
                                *
                                *
            *                   *
            *                   *     *   *
            *                   *     *   *
    *       *     *             *     *   *
    *       *     * *     * *   *     * * *
    *       *   * * *     * *   * *   * * * *
    *     * * * * * *     * * * * *   * * * *     * *
    * * * * * * * * * * * * * * * * * * * * * * * * * *
    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
    
    来源
    翻译自USACO 2003 February Orange的试题。
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #include<cstring>
     5 using namespace std;
     6 char a[10001];
     7 char b[10001];
     8 char c[10001];
     9 char d[10001];
    10 int ans[10001];
    11 int tot;
    12 char kong[4];
    13 int month[14]={31,28,31,30,31,30,31,31,30,31,30,31};
    14 int maxn=-1;
    15 int main()
    16 {
    17     gets(a);int la=strlen(a);
    18     gets(b);int lb=strlen(b);
    19     gets(c);int lc=strlen(c);
    20     gets(d);int ld=strlen(d);
    21     for(int i=0;i<la;i++)
    22         ans[(int)a[i]]++;
    23     for(int i=0;i<lb;i++)
    24         ans[(int)b[i]]++;
    25     for(int i=0;i<lc;i++)
    26         ans[(int)c[i]]++;
    27     for(int i=0;i<ld;i++)
    28         ans[(int)d[i]]++;
    29     for(int i=65;i<=90;i++)
    30     {
    31         if(ans[i]>maxn)maxn=ans[i];
    32     }
    33     for(int i=maxn;i>=1;i--)
    34     {
    35         for(int j=65;j<=90;j++)
    36         {
    37             if(ans[j]<i)cout<<' '<<" ";
    38             else cout<<'*'<<" ";
    39         }
    40         cout<<endl;
    41     }
    42     for(int i=65;i<=90;i++)
    43     {
    44         cout<<(char)i<<" ";
    45     }
    46     return 0;
    47 }

    此题的关键在于如何取到出现次数最多的字母以及如何输出

  • 相关阅读:
    Vue学习笔记(4)-带参数路由,嵌套路由,编程式导航
    JS数组&&数组对象去重
    Vue学习笔记(3)-品牌管理系统
    Vue学习笔记(2)-组件生命周期
    负margin
    CSS布局奇淫巧计之-强大的负边距
    由浅入深漫谈margin属性
    双飞翼布局和圣杯布局的对比
    圣杯布局的实现过程
    CSS实现垂直居中的5种方法
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/6510514.html
Copyright © 2020-2023  润新知