zoukankan      html  css  js  c++  java
  • 洛谷 P1598 垂直柱状图【字符串+模拟】

    P1598 垂直柱状图

    题目描述

    写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过72个字符),然后用柱状图输出每个字符在输入文件中出现的次数。严格地按照输出样例来安排你的输出格式。

    输入输出格式

    输入格式:

    四行字符,由大写字母组成,每行不超过72个字符

    输出格式:

    由若干行组成,前几行由空格和星号组成,最后一行则是由空格和字母组成的。在任何一行末尾不要打印不需要的多余空格。不要打印任何空行。

    输入输出样例

    输入样例#1: 复制
    THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.
    THIS IS AN EXAMPLE TO TEST FOR YOUR
    HISTOGRAM PROGRAM.
    HELLO!
    
    输出样例#1: 复制
                                *
                                *
            *                   *
            *                   *     *   *
            *                   *     *   *
    *       *     *             *     *   *
    *       *     * *     * *   *     * * *
    *       *   * * *     * *   * *   * * * *
    *     * * * * * *     * * * * *   * * * *     * *
    * * * * * * * * * * * * * * * * * * * * * * * * * *
    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
    

    说明

    每行输出后面不允许出现多余的空格。

    题目链接:https://www.luogu.org/problemnew/show/1598

    分析:(⊙o⊙)…贼恶心了,打印格式出错了好几次,GG

    其实这道题很简单,就是注意细节就可以了,一路扫过去,把所有单词出现的次数记录下来,然后模拟一个输出。

    输出其实最麻烦。

    主要思路,求最大的,然后从底下或者最上面扫,当a-z中有字母个数达到现在已所指的数目,就输出,否则就输出空格~~~

    没想到两个月没做题,水平掉了这么多,我看来还是得花点时间刷题了,准备准备打个蓝桥杯,希望有机会和大佬们在北京相见QAQ

    下面给出AC代码:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int a[100];
     4 char s[100];
     5 int main()
     6 {
     7     int maxn=0;
     8     for(int i=1;i<=4;i++)
     9     {
    10         gets(s);
    11         int len=strlen(s);
    12         for(int j=0;j<len;j++)
    13         {
    14            if(s[j]>='A'&&s[j]<='Z')
    15                 a[s[j]-'A'+1]++;
    16         }
    17     }
    18     for(int i=1;i<=26;i++)
    19         maxn=max(maxn,a[i]);
    20     for(int t=maxn;t>0;t--)
    21     {
    22         for(int i=1;i<=26;i++)
    23         {
    24             if(a[i]>=t)
    25                 cout<<"*"<<" ";
    26             else printf("  ");
    27         }
    28         cout<<endl;
    29     }
    30     for(int i=(int)'A';i<=(int)'Z';i++)
    31         cout<<(char)i<<" ";
    32     return 0;
    33 }
  • 相关阅读:
    一行代码更改博客园皮肤
    fatal: refusing to merge unrelated histories
    使用 netcat 传输大文件
    linux 命令后台运行
    .net core 使用 Nlog 配置文件
    .net core 使用 Nlog 集成 exceptionless 配置文件
    Mysql不同字符串格式的连表查询
    Mongodb between 时间范围
    VS Code 使用 Debugger for Chrome 调试vue
    css权重说明
  • 原文地址:https://www.cnblogs.com/ECJTUACM-873284962/p/7744529.html
Copyright © 2011-2022 走看看