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

 

目录
相关文章
|
存储 算法
leetcode-每日一题1252. 奇数值单元格的数目(模拟优化)
时间复杂度:O(q * (m + n) + m * n) 其中q表示 indices 数组的长度,m、n为矩阵的行数和列数,遍历 indices 数组都要更新一次行列,总共需要O(q * (m + n))的时间,最后遍历一次矩阵,总共需要O(m * n)的时间
77 0
leetcode-每日一题1252. 奇数值单元格的数目(模拟优化)
|
4月前
|
数据可视化 数据挖掘 数据处理
Python实现数字按三角形排列
Python实现数字按三角形排列
33 4
|
算法
判断三角形的性质(直角或等腰)简便算法
判断三角形的性质(直角或等腰)简便算法
146 0
P1598 垂直柱状图(模拟)
P1598 垂直柱状图(模拟)
56 0
LeetCode 1637. 两点之间不包含任何点的最宽垂直面积
给你 n 个二维平面上的点 points ,其中 points[i] = [xi, yi] ,请你返回两点之间内部不包含任何点的 最宽垂直面积 的宽度。
105 0
|
8月前
|
C语言
杨辉三角(代码直接呈现,便于理解)
杨辉三角(代码直接呈现,便于理解)
84 0
|
存储 人工智能 BI
391. 完美矩形 : 常规扫描线题目
391. 完美矩形 : 常规扫描线题目
PTA 7-1 打印三角形拼图 (15 分)
一个正方形可以用两个等边直角三角形拼出来。给定正方形的边长、两个三角形和对角线所用的符号,请你打印出这两个三角形拼出的正方形。
151 0

热门文章

最新文章