一、Description

Write a program to read four lines of upper case (i.e., all CAPITAL LETTERS) text input (no more than 72 characters per line) from the input file and print a vertical histogram that shows how many times each letter (but not blanks,
digits, or punctuation) appears in the all-upper-case input. Format your output exactly as shown.

Input

* Lines 1..4: Four lines of upper case text, no more than 72 characters per line.

Output

* Lines 1..??: Several lines with asterisks and spaces followed by one line with the upper-case alphabet separated by spaces. Do not print unneeded blanks at the end of any line. Do not print any leading blank lines.

Sample Input

THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.
THIS IS AN EXAMPLE TO TEST FOR YOUR
HISTOGRAM PROGRAM.
HELLO!

Sample Output

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

二、题解

目标:计算出给定的4行字符序列中每个字母出现的次数用“ * ”表示,并绘制出直方图。

问题:1、计算字母出现的次数。 2、打印直方图

方法:1、依次读入每一行到一个字符串,将26个字母依次和字符串中的字符比较,相符则加1.把结果存放到大小为26的数组a中。

2、找出a数组中的最大数max,将max循环递减,每次循环比较a数组和max,如果相等则输出“* ”,否则输出空格。每次比较完一个max,换行一次。最后输出A~Z即    可。

注意:难点在于输出,刚开始的时候也没明白。后来一想也挺简单的。刚开始的时候就用SC.next()读入四个数组,结果怎么都不对,后来发现犯傻了。应该是读入一行才对,呵呵。这个老师不记得, BufferedReader br=new BufferedReader(new InputStreamReader(System.in));,提醒自己一下。

三、java代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader; public class Main {
static int[] a=new int [27];
static int max=-1;
public static void count(String s){
int i;
for(i=0;i<s.length();i++){
for(int k=65;k<=90;k++){
if((int)s.charAt(i)==k){
a[k-64]++;
}
if(a[k-64]>max)
max=a[k-64];
}
}
}
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String[] s=new String[4];
int i,j;
char c;
for(i=0;i<4;i++){
s[i]=br.readLine();
count(s[i]);
}
for(j=max;j>=1;j--){
for(i=1;i<=26;i++){
if(a[i]<j)
System.out.print(" ");
else
System.out.print("* ");
}
System.out.println();
}
for(c='A';c<='Z';c++){
System.out.print(c+" ");
}
}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

Poj 2136 Vertical Histogram(打印垂直直方图)的更多相关文章

  1. POJ 2136 Vertical Histogram(当时写的比较恶心,优化一下)

    Vertical Histogram Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 21223 Accepted: 10048 ...

  2. poj 2136 Vertical Histogram 解题报告

    题目链接:http://poj.org/problem?id=2136 题意不难理解,就是输入四行字符串(每行字符总数不超过72个),统计26个英文字母的数目,并按柱状图的形式输出.我的思路就是,先用 ...

  3. POJ 2136 Vertical Histogram

    题意:按样例那样模拟…… 解法:模拟…… 代码: #include<stdio.h> #include<iostream> #include<algorithm> ...

  4. Openjudge 1.3-04 垂直直方图

    04:垂直直方图 查看 总时间限制: 1000ms 内存限制: 65536kB 描述 输入4行全部由大写字母组成的文本,输出一个垂直直方图,给出每个字符出现的次数.注意:只用输出字符的出现次数,不用输 ...

  5. J - Vertical Histogram(1.5.7)

    J - Vertical Histogram(1.5.7) Time Limit:1000MS    Memory Limit:65536KB    64bit IO Format:%I64d &am ...

  6. Openjudge-NOI题库-垂直直方图

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

  7. 打表格,字符串处理,POJ(2136)

    题目链接:http://poj.org/problem?id=2136 水题WA了半天,结果是数组开小了. #include <stdio.h> #include <string.h ...

  8. POJ 3414 Pots bfs打印方案

    题目: http://poj.org/problem?id=3414 很好玩的一个题.关键是又16ms 1A了,没有debug的日子才是好日子.. #include <stdio.h> # ...

  9. POJ 3414 Pots ( BFS , 打印路径 )

    题意: 给你两个空瓶子,只有三种操作 一.把一个瓶子灌满 二.把一个瓶子清空 三.把一个瓶子里面的水灌到另一个瓶子里面去(倒满之后要是还存在水那就依然在那个瓶子里面,或者被灌的瓶子有可能没满) 思路: ...

随机推荐

  1. 小程序发起post请求回调成功没有数据

    get请求时为 header:{ "content-type":'application/json' },POST 请求会将data的值放在Request Payload里面,而不 ...

  2. 微信小程序报“app.json”错误解决办法

    1.亲测 “app.json未找到入口 app.json 文件,或者文件读取失败,请检查后重新编译.” 是由于新创建的界面xxx.json所在的文件夹为0KB造成的,你可以试着在xxx.json文件内 ...

  3. SQLite支持的并发访问数

    SQLite objects created in a thread can only be used in that same thread.The object was created in th ...

  4. php输出缓冲区

    ob_start(); echo 'aaa'; $string = ob_get_contents(); file_put_contents('a.html', $string); ob_flush( ...

  5. ASP-Dictionary对象-基础用法

    1.存在 dim d set d=Server.CreateObject("Scripting.Dictionary") d.Add "c", "Ch ...

  6. JS异错面试题

    转自 http://www.codeceo.com/article/one-javascript-interview.html function Foo() { getName = function ...

  7. BZOJ1505: [NOI2004]小H的小屋

    BZOJ1505: [NOI2004]小H的小屋 Description 小H发誓要做21世纪最伟大的数学家.他认为,做数学家与做歌星一样,第一步要作好包装,不然本事再大也推不出去. 为此他决定先在自 ...

  8. Cordova 教程 学习步骤-从零基础开始

    Cordova的技术交流新群

  9. 去掉标题栏/ActionBar后点击menu键时应用崩溃

    MainActivity 继承了 ActionBarActivity后,想要去掉标题栏(ActionBar),在程序中加上requestWindowFeature(Window.FEATURE_NO_ ...

  10. mysql中子查询更新,得用别名表

    通过查出最大id,来更新记录 update order set status = 'xx' where id in (select v.id from (select max(id) id from ...