洛谷 P1598 垂直柱状图【字符串+模拟】

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

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 }

 

目录
相关文章
|
5月前
|
Java C++ Python
试题 基础练习 矩形面积交
试题 基础练习 矩形面积交
41 0
|
8天前
|
数据可视化 数据挖掘 数据处理
Python实现数字按三角形排列
Python实现数字按三角形排列
15 0
|
4月前
|
算法 C++ 容器
心得经验总结:排列组合问题之圆形分布
心得经验总结:排列组合问题之圆形分布
18 0
|
5月前
【每日一题Day162】LC1637两点之间不包含任何点的最宽垂直区域 | 排序
【每日一题Day162】LC1637两点之间不包含任何点的最宽垂直区域 | 排序
118 0
P1598 垂直柱状图(模拟)
P1598 垂直柱状图(模拟)
40 0
|
数据挖掘 Python
封装一个函数,山峰 高度不固定、纸张厚度不固定,计算折叠几次后超过山峰
封装一个函数,山峰 高度不固定、纸张厚度不固定,计算折叠几次后超过山峰
46 0
|
Python
Python|打印给定高度和笔宽的叉
Python|打印给定高度和笔宽的叉
59 0
labview数值型数据实验输入显示时间滑动杆旋钮仪表相加相减相乘滚动条
LabVIEW是一种程序开发环境,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。LabVIEW软件是NI设计平台的核心,也是开发测量或控制系统的理想选择。LabVIEW开发环境集成了工程师和科学家快速构建各种应用所需的所有工具,旨在帮助工程师和科学家解决问题、提高生产力和不断创新。
115 0
|
存储 算法
leetcode-每日一题1252. 奇数值单元格的数目(模拟优化)
时间复杂度:O(q * (m + n) + m * n) 其中q表示 indices 数组的长度,m、n为矩阵的行数和列数,遍历 indices 数组都要更新一次行列,总共需要O(q * (m + n))的时间,最后遍历一次矩阵,总共需要O(m * n)的时间
61 0
leetcode-每日一题1252. 奇数值单元格的数目(模拟优化)