百练2800:垂直直方图
2016-03-05 19:57
274 查看
总时间限制: 1000ms 内存限制: 65536kB
描述
输入4行全部由大写字母组成的文本,输出一个垂直直方图,给出每个字符出现的次数。注意:只用输出字符的出现次数,不用输出空白字符,数字或者标点符号的输出次数。
输入
输入包括4行由大写字母组成的文本,每行上字符的数目不超过80个。
输出
输出包括若干行。其中最后一行给出26个大写英文字母,这些字母之间用一个空格隔开。前面的几行包括空格和星号,每个字母出现几次,就在这个字母的上方输出一个星号。注意:输出的第一行不能是空行。
样例输入
THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.
THIS IS AN EXAMPLE TO TEST FOR YOUR
HISTOGRAM PROGRAM.
HELLO!
样例输出
来源
翻译自USACO 2003 February Orange的试题。
代码如下:
描述
输入4行全部由大写字母组成的文本,输出一个垂直直方图,给出每个字符出现的次数。注意:只用输出字符的出现次数,不用输出空白字符,数字或者标点符号的输出次数。
输入
输入包括4行由大写字母组成的文本,每行上字符的数目不超过80个。
输出
输出包括若干行。其中最后一行给出26个大写英文字母,这些字母之间用一个空格隔开。前面的几行包括空格和星号,每个字母出现几次,就在这个字母的上方输出一个星号。注意:输出的第一行不能是空行。
样例输入
THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.
THIS IS AN EXAMPLE TO TEST FOR YOUR
HISTOGRAM PROGRAM.
HELLO!
样例输出
来源
翻译自USACO 2003 February Orange的试题。
代码如下:
#include<stdio.h> #include<string.h> #define MAX_SIZE 26 #define WORD_MAX_SIZE 20000 int h[MAX_SIZE]={0};//统计每个字母出现的次数 int main(){ int max=0;//字母最多出现的次数 int i, j; char word[WORD_MAX_SIZE]; for(int k=0; k <4; k++){//如果要输入的是若干行文字该如何处理呢? gets(word);//多行文字仅能一行一行输入 int size=strlen(word);//字母的数量 for(i =0; i <size; i++){ char c=word[i]; if(c >='A' && c <='Z'){ h[c-'A']++; if(h[c-'A'] >max){//获取最大的统计数值 max=h[c-'A']; } } } } for(i=0; i<max; i++) { for(j=0; j<MAX_SIZE; j++){ //非最后一列的处理 if(j!=MAX_SIZE-1){ if(h[j] <max-i){ printf(" "); } else{ printf("* "); } } //最后一列的处理 else{ if(h[j] <max-i){ printf(" \n"); } else{ printf("*\n"); } } } } for(i =0; i <MAX_SIZE; i++){//打印最后一行字母表 if(i!=MAX_SIZE-1){ printf("%c ", 'A'+i); } else{ printf("%c\n", 'A'+i); } } return 0; }
相关文章推荐
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法
- 基于C++实现的各种内部排序算法汇总
- C++线性时间的排序算法分析
- C++实现汉诺塔算法经典实例
- PHP实现克鲁斯卡尔算法实例解析