洛谷 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 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏mySoul

设计模式 里氏替换原则

在场景中,三毛需要什么枪支,就直接new 出一个枪支即可,然后其内通过抽象类获取到对象,然后对齐进行修饰

1216
来自专栏Golang语言社区

实效go编程--2

Go函数的返回值或结果“形参”可被命名,并作为常规变量使用,就像传入的形参一样。 命名后,一旦该函数开始执行,它们就会被初始化为与其类型相应的零值; 若该函数执...

3387
来自专栏Script Boy (CN-SIMO)

软件工程个人作业01

题目:      像二柱子那样,花二十分钟写一个能自动生成三十道小学四则运算题目的 “软件”,要求:除了整数以外,还要支持真分数的四则运算(需要验证结果的正确...

2190
来自专栏Python攻城狮

Python数据科学(七)- 资料清理(Ⅱ)1.资料转换2.处理时间格式资料3.重塑资料4.学习正则表达式5.实例处理

注意:这里的时间转换后的格式可以根据需要设定,eg:dt.strftime('%Y/%m/%d')

1163
来自专栏码匠的流水账

java10系列(二)Local-Variable Type Inference

本文主要解读下java10的Local-Variable Type Inference

1441
来自专栏腾讯IVWEB团队的专栏

web 直播流的解析

Web 进制操作是一个比较底层的话题,因为平常做业务的时候根本用不到太多,或者说,根本用不到。那什么情况会用到呢? canvas、websocket、file....

8652
来自专栏机器学习入门

挑战程序竞赛系列(86):3.6极限情况(3)

挑战程序竞赛系列(86):3.6极限情况(3) 传送门:AOJ 2201: Immortal Jewels 翻译参考至hankcs: http://www....

21910
来自专栏移动开发面面观

基于OpenGLES的Android相机预览

随着AR效果越来越普及,摄像头在Android中的应用越来越重要。通常摄像头的预览方案,通常使用SurfaceView的方案。

1091
来自专栏阮一峰的网络日志

Unicode与JavaScript详解

上个月,我做了一次分享,详细介绍了Unicode字符集,以及JavaScript语言对它的支持。下面就是这次分享的讲稿。 ? 一、Unicode是什么? Uni...

3487
来自专栏跟着阿笨一起玩NET

VB.NET语法小结

2472

扫码关注云+社区

领取腾讯云代金券