POJ NOI0113-04 垂直直方图(PKU2800)

摘要:
问题链接:POJNOI0113-04垂直直方图。原题出处:PKU2800垂直直方图。总时间限制:1000ms内存限制:65536kB描述输入4行全部由大写字母组成的文本,输出一个垂直直方图,给出每个字符出现的次数。输入输入包括4行由大写字母组成的文本,每行上字符的数目不超过80个。其中最后一行给出26个大写英文字母,这些字母之间用一个空格隔开。样例输出*************************************************************************************ABCDEFGHIJKLMNOPQRSTUVWXYZ来源翻译自USACO2003FebruaryOrange的试题。该问题的关键是需要一定的想象力,将统计数据转换成相应的图形。程序说明(略)。

问题链接POJ NOI0113-04 垂直直方图

原题出处PKU2800 垂直直方图


总时间限制:
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!
样例输出
*
                            *
        *                   *
        *                   *     *   *
        *                   *     *   *
*       *     *             *     *   *
*       *     * *     * *   *     * * *
*       *   * * *     * *   * *   * * * *
*     * * * * * *     * * * * *   * * * *     * *
* * * * * * * * * * * * * * * * * * * * * * * * * *
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
来源
翻译自USACO 2003 February Orange的试题。



问题分析

统计四行输入的大写字母,根据统计结果输出柱状图。

该问题的关键是需要一定的想象力,将统计数据转换成相应的图形。

需要注意的一点是,如果出现次数最多字符的出现次数为max,则输出max行。这是关键的地方。

程序说明

(略)。


参考链接POJ2136 Vertical Histogram

AC的C++语言程序:

/* POJ2136 Vertical Histogram */

#include <iostream>
#include <string>
#include <cstring>
#include <cctype>

using namespace std;

const int MAXN = 26;
int acount[MAXN];

int main()
{
    int linecount, max;
    string s;

    memset(acount, 0, sizeof(acount));

    linecount = 0;
    while (getline(cin, s)) {
        // 统计字母
        for(int i=0; i<(int)s.size(); i++)
//            if(isalpha(s[i]))
//                acount[s[i] - 'A']++;
            if(isupper(s[i]))
                acount[s[i] - 'A']++;

        // 每4行输出一次结果
        if(++linecount == 4) {
            linecount = 0;

            // 计算最大的统计值
            max = 0;
            for(int i=0; i<MAXN; i++)
                if(acount[i] > max)
                    max = acount[i];

            // 输出max行
            for(int i=max; i>0; i--) {
                for(int j=0; j<MAXN; j++) {
                    if(acount[j] >= i)
                        cout << "* ";
                    else
                        cout << "  ";
                }
                cout << endl;
            }

            for(int i=0; i<MAXN; i++)
                cout << (char)('A' + i) << " ";
            cout << endl;
        }
    }

    return 0;
}

免责声明:文章转载自《POJ NOI0113-04 垂直直方图(PKU2800)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇file的getPath getAbsolutePath和getCanonicalPath的不同Scala从入门到放弃(三)Scala的数组、映射、元组和集合下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

OpenCV-Python 直方图-1:查找、绘制和分析 | 二十六

目标 学会 使用OpenCV和Numpy函数查找直方图 使用OpenCV和Matplotlib函数绘制直方图 你将看到以下函数:cv.calcHist(),np.histogram()等。 理论 那么直方图是什么?您可以将直方图视为图形或绘图,从而可以总体了解图像的强度分布。它是在X轴上具有像素值(不总是从0到255的范围),在Y轴上具有图像中相应...

matlab练习程序(直方图反向投影)

  做meanshift物体跟踪的时候中间有一步叫做直方图反向投影,所以我就先实现了这样一个步骤。   直方图反向投影说白了就是模板匹配,给定一个较小的目标模板,然后再逐个遍历原图像和模板图像相同的图像块的,对比图像块和模板的直方图,然后把比较结果存入一个新的图像中,新图像中的全局极值就是模板在原图像中所在的位置。这里主要麻烦的是怎么比较两个图像块的直方图...

图像相似度测量与模板匹配总结

摘要本文主要总结了进行目标跟踪、检测中经常使用到的图像相似度测量和模板匹配方法,并给出了具体的基于OpenCV的代码实现。 引言模板匹配是一种在源图像中寻找与图像patch最相似的技术,常常用来进行目标的识别、跟踪与检测。其中最相似肯定是基于某种相似度准则来讲的,也就是需要进行相似度的测量。另外,寻找就需要在图像上进行逐行、逐列的patch窗口扫描,当...

paper 106:图像增强方面的介绍

图像增强是从像素到像素的操作,是以预定的方式改变图像的灰度直方图。有时又称为对比度增强,灰度变换。点运算不可能改变图像内的空间关系,输出像素的灰度值由输入像素的值决定。其作用: 对比度增强:扩展感兴趣特征的对比度。 光度学标定:去掉图像传感器的非线性影响。所谓光度学,就是在可见光波段内,考虑到人眼的主观因素后的相应计量学科称为光度学。标定即计算内参,在光度...

R语言入门:直方图histogram的绘制

直方图和条形图最大的不同则是直方图可以用于显示出一个数据的频数,具有统计的作用,我们下面来看一一看直方图在R语言当中是如何绘制的吧! 首先创建一系列的数据: h<-c(4,6,3,46,3,5,7,8,3,4,3,4,5) 创建完之后将这个数据纳入到直方图histogram的绘制函数hist()当中,如下所示: hist(h,xlab = "numb...

Oracle 直方图理论

一.何为直方图 直方图是一种几何形图表,它是根据从生产过程中收集来的质量数据分布情况,画成以组距为底边、以频数为高度的一系列连接起来的直方型矩形图,如图所示 二.ORACLE 直方图 在Oracle中直方图是一种对数据分布情况进行描述的工具。它会按照某一列不同值出现数量多少,以及出现的频率高低来绘制数据的分布情况,以便能够指导优化器根据数据的分布做出正确...