Vertical Histogram——字母频率柱状图(POJ2136)
来源:互联网 发布:sequoiadb巨杉数据库 编辑:程序博客网 时间:2024/06/04 22:17
问题描述
读取四行字母,并输出一个垂直柱状图用以显示在输入中的所有字母的出现次数。
输入:
1行到4行: 大写字母 , 每行不超过72个字符
输出:
第一行到第?行: 由星号和空格组成的若干行,最后一行由被分开的大写字母组成。
输入样例:
THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.
THIS IS AN EXAMPLE TO TEST FOR YOUR
HISTOGRAM RROGRAM
HELLO!
分析:
按照自顶向下,自左向右的顺序绘制统计图
1.定义一个数组statistic 来统计每个字母出现的次数, 设置一个最大值max 表示字母出现的最大次数
2.从统计图中最高的柱子出发:即从最上层( 字母出现次数最多的那一层),自顶向下计算,找出当前行中是否有频率不小于当前行最大频率值的字母 即:判断 statistic[i] >=max-i
(1) 如果有,则输出 一个 * 和一个空格
(2)如果没有,则输出两个空格
3.输入最下层的A-Z字母
代码实现:
//Vertical Histogram柱状图#include "stdafx.h"#include <string>#include <iostream>#include <ctype.h>#include <cstdio>using namespace std;int _tmain(int argc, _TCHAR* argv[]){ //数组中存放各个字母出现的次数 unsigned short statistic[26] = { 0 }; //出现的最大次数 unsigned short max = 0; int i, j; /**输入各行数据并统计每个字母出现的次数 */ for (i = 0; i < 4; i++) { string s; getline(cin, s); for (j = 0; j < s.size(); j++){ if (toupper(s[j])&&isalpha(s[j])) statistic[s[j] - 'A']++; } } //找出字母出现的最大次数 for (i = 0; i < 26; i++){ if (statistic[i] >max) max = statistic[i]; } //从统计图中最高的柱子出发:即从最上层 字母出现次数最多的那一层,自顶向下计算 for (i = max; i > 0; i--) { for (j = 0; j < 26; j++) { //寻找当前行中字母出现次数不小于当前行的最大峰值时 if (statistic[j] >= i) cout << "* "; //输出 一个 * 和一个空格 else cout << " "; //否则输出两个连续的空格 } cout << endl; } //输出最下面一行的A-Z字母 for (i = 0; i < 26; i++) printf("%c ",'A'+i); cout << endl; return 0;}
测试结果
1 0
- Vertical Histogram——字母频率柱状图(POJ2136)
- POJ2136-Vertical Histogram(C语言实现)
- POJ2136 Vertical Histogram
- poj2136 Vertical Histogram
- POJ2136 Vertical Histogram【打印图案】
- 读程序 POJ2136 Vertical Histogram
- POJ 2136 Vertical Histogram(我的水题之路——字符统计表)
- Vertical Histogram
- Vertical Histogram
- Vertical Histogram
- Vertical Histogram
- Vertical Histogram
- Vertical Histogram
- POJ-2136 Vertical Histogram-用*号统计字母个数
- poj 2136 Vertical Histogram (模拟)
- POJ 2136 Vertical Histogram(垂直直方图)
- PKU 2136 Vertical Histogram
- pku 2136 Vertical Histogram
- Eclipse无法启动——显示“Failed to create the Java Virtual Machine”
- Reverse Linked List
- TOJ Number Sequence
- css初始化样式
- Java面向对象第一天
- Vertical Histogram——字母频率柱状图(POJ2136)
- poj 3096 Surprising Strings(stl map的使用)
- Go语言语法汇总
- scala api之Await
- 时间加减运用派生和重载
- 使用GitHub和Hexo搭建免费静态Blog
- css技巧总结
- CPP链表实现栈
- java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.FilterDispatcher