一:题目

摆放在面前的是一小段英文文章。 afeng希望你能帮他统计一下每个小写字母出现的次数。 最后再以柱状图的形式(参照输出样例)输出出来。

输入格式:
输入第一行为一个正整数N(N<=100),表示文章的行数。 随后为N行文本。

输出格式:
由若干行组成,前几行由空格和星号组成,最后一行则是由空格和字母组成的。格式严格参照样例。

输入样例:

4
I never saw a Moor-
I never saw the Sea-
Yet know I how the Heather looks
And what a Billow be.

输出样例:

        *                                          *                                          *                                          *
*       *                   *
*       *                   *               *
*       *     *             *         *     *
*       *     *           * *     *   *     *
*       *     *       *   * *     * * *     *
*       *     *     * *   * *     * * *   * *
* *   * *     * *   * *   * *     * * *   * *
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

二:思路

1.如何处理我们的数据,也就是统计每个字母的个数;在这里我选取的是map容器
利用map的一对一特性,统计每个字母的个数
2.那么如何显示出柱状图呢?首先我们将最大的字母个数求出来,利用for循环
那么我们就需要进行这么多次的输出,我进行递减输出(i–),然后在范围为26的for
循环当中判断字母在map容器是否存在 存在的话就判断 i小于等于某个字母的个数的时候,
接下来输出 * 否则就输出空格。如果map当中就无该字母也得输出空格,具体的格式要求
可以在PTA上的测试用例当中进行调试。

三:上码

/**思路: 1.如何处理我们的数据,也就是统计每个字母的个数;在这里我选取的是map容器利用map的一对一特性,统计每个字母的个数2.那么如何显示出柱状图呢?首先我们将最大的字母个数求出来,利用for循环那么我们就需要进行这么多次的输出,我进行递减输出(i--),当 i = 某个字母的个数的时候,接下来就每次都输出 *
*/ #include<iostream>//输入输出
#include<map>//map容器
#include<algorithm>//sort函数
#include<math.h>//max和min等数学函数
using namespace std; int main(){map<char,int> m;map<char,int>:: iterator mt;char ch[26] = {'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'};int N;cin >> N;getchar();//读取换行符 (当cin 和 getline 同时用的时候) for(int i = 0; i < N; i++) {string str;getline(cin,str);//     cout << str << endl;for(int j = 0; j < str.size(); j++) {if(str[j] == ' ' || str[j] == '-' || str[j] == '.' || isupper(str[j]))//isupper(str[i])如果是大写字母就跳过 continue;          m[str[j]] += 1;//统计每个字母的个数 }  }int maxx = 0;for(mt = m.begin(); mt != m.end(); mt++) {maxx = max(maxx,mt->second);//cout << mt->first << ' ' << mt->second << endl;}for(int i = maxx; i >= 1; i--) {                    for(int j = 0; j < 26; j++)   {int flag = 0;for(mt = m.begin(); mt != m.end(); mt++) {if(ch[j] == mt->first) {flag = 1;if(i <= mt->second)cout << "*";elsecout << " "; }} if(flag == 0){//如果并无该字母就输出空格 cout << " ";}if(j != 25)cout << " ";//每个字母输出完成后,无论是否该字母均需输出空格 flag = 0;}  cout << endl;                                                                             }cout << ch[0]; for(int i = 1; i < 26; i++){cout << ' ' << ch[i];}}

7-1 字母统计图 (10 分)(思路+详解)相关推荐

  1. 10-4 6-4 查询厂商“D“生产的PC和便携式电脑的平均价格 (10 分)思路+详解+测试用例

    前言:测试用表 贴心杰将这个测试表分享给大家 ,如果大家做题的时候发现那个点过不去,一定不要直接看别人的博客,先自己测试用例,如果思路也对 ,验证数据也对,还有错误 你再看看别人的思路!!! CREA ...

  2. 7-1 装载问题 (10 分)(思路+详解)

    一:题目 Come 宝宝!! 输出格式: 输出所有可行的方案数量 输入样例1: 3 50 50 10 40 40 结尾无空行 输出样例1: 4 结尾无空行 输入样例2: 3 50 50 20 40 4 ...

  3. 7-3 最小生成树-kruskal (10 分)(思路+详解+并查集详解+段错误超时解决)宝 Come

    一:前言 本题需要用到并查集的知识,建议先学完并查集后再看看本题 二:题目 题目给出一个无向连通图,要求求出其最小生成树的权值. 温馨提示:本题请使用kruskal最小生成树算法. 输入格式: 第一行 ...

  4. 7-6 区间覆盖 (10 分)(思路+详解)Come 宝!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    一:题目 设 x 1 ​ ,x 2 ​ ,-,x n ​ 是实直线上的n个点.用固定长度的闭区间覆盖这n个点,至少需要多少个这样的固定长度闭区间? 输入格式: 第1行有2个正整数n(n<50)和 ...

  5. 7-2 单源最短路径 (10 分)(思路+详解+邻接表做法)Come Brather!!!!!!!!!!

    一:前言 本次题解先展示用邻接矩阵做的,但其会出现内存超限,因为确实是临界矩阵在数据很大的时候相比临界表是耗内存的,但是以前习惯用临界矩阵了,所以一上来就用临界矩阵做了,后来上网查了后知道邻接矩阵会内 ...

  6. 7-5 流水作业调度 (10 分)(思路+详解+johnson解析)Come Baby!!!!!!!!!!

    一:题目 n个作业{1,2,-,n}要在由2台机器M1和M2组成的流水线上完成加工.每个作业加工的顺序都是先在M1上加工,然后在M2上加工.M1和M2加工作业i所需的时间分别为ai和bi.流水作业调度 ...

  7. 7-3 符号三角形 (10 分)(思路+详解)

    一:题目 Come 宝 !!! 输入格式: 第一行符号个数n 输出格式: 符合要求的三角形个数 输入样例: 4 结尾无空行 输出样例: 6 二:思路 思路: 1.如果我们确立的第一行的符号是什么 ,那 ...

  8. 7-3 凸多边形最优三角剖分 (10 分)(思路+详解+分析题意+动态规划)Come Baby!!!!!!!!!

    一:题目: 给定n边凸多边形P,要求确定该凸多边形的三角剖分(将多边形分割成n-2个三角形),使得该三角剖分中诸三角形上权之和为最小.各边弦的权值以由输入数据给出,以无向图的形式表示.三角形的权值等于 ...

  9. 7-43 字符串关键字的散列映射 (25 分)(思路+详解+不懂的兄弟们来呀)兄弟们我干了5个小时,一个一个测试点过的

    一:题目 7-43 字符串关键字的散列映射 (25 分) 给定一系列由大写英文字母组成的字符串关键字和素数P,用移位法定义的散列函数H(Key)将关键字Key中的最后3个字符映射为整数,每个字符占5位 ...

最新文章

  1. 安装node.js 附带node.js以及npm初步认识 设置淘宝/npm镜像 命令
  2. 如何搭建html运行环境,搭建基于express框架运行环境的方法步骤
  3. HDU 5226 Tom and matrix(组合数学+Lucas定理)
  4. vijos p1002——过河(noip2005提高组T2)
  5. [vue] 组件中写name选项有什么作用?
  6. Cheggit解析器模块分析
  7. LeetCode(590)——N叉树的后序遍历(JavaScript)
  8. 干货 | 带你解析计算机视觉热门技术—目标检测与追踪
  9. F5和nginx配合转发前端请求
  10. Unsupervised Learning | 对比学习——13篇论文综述
  11. 【数字电路基础】——逻辑门电路
  12. python selenium下载图片_selenium下载图片(原图)
  13. 微信开发者工具测试方法
  14. linux里php如何执行文件,linux如何执行文件
  15. 金鳞岂是池中物IT评论博客正式成立
  16. Logstash的filter插件-Dissect
  17. Vue制作页面在线裁剪功能
  18. 如何搞定你喜欢的美术妹纸?
  19. 模拟电路实验 03 - | 负反馈放大电路
  20. ndn-tools:dissect-wireshark的使用

热门文章

  1. 用 Visual Studio Code 在 macOS 上创建首个 ASP.NET Core 应用程序
  2. 酷派手机android版本,系统版本迎来升级
  3. 剑指offer之partition算法
  4. 剑指offer之中判断二叉树是不是对称二叉树(递归和非递归实现)
  5. C和指针之数组名和数组名和首元素以及sizeof(数组名)和sizeof(数组名作为参数)区别
  6. Android之走手机流量让电脑能上网几种方法
  7. 链表之判断一个链表是否为回文结构(二)
  8. 【iVX 初级工程师培训教程 10篇文拿证】01 了解 iVX 完成新年贺卡
  9. text 热敏打印机_只要有想象力,打印机都能做游戏
  10. 双时隙的工作原理_OFDM调制技术原理是什么 OFDM调制实现原理介绍【图文】