zoukankan      html  css  js  c++  java
  • HDU2708 Vertical Histogram

    USACO 2003 February Orange


    问题链接HDU2708 Vertical Histogram

    问题简述:参见上述链接。

    问题分析

    这个题与POJ2136应该算是同一题,在HDU中测试数据有所不同:

    1.输入的测试数据可能有多组;

    2.结果的每一行,最后的空格不输出(坑的地方)。


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

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

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

    程序说明

      (略)。

    AC的C++语言程序如下:

    /* HDU2708 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, line;
    
        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--) {
                    line = "";
                    for(int j=0; j<MAXN; j++) {
                        if(acount[j] >= i)
                            line += "* ";
                        else
                            line += "  ";
                    }
                    int k = line.size() - 1;
                    while (line[k] == ' ') {
                        line.erase(k, 1);
                        k--;
                    }
                    cout << line << endl;
                }
    
                for(int i=0; i<MAXN-1; i++)
                    cout << (char)('A' + i) << " ";
                cout << 'Z' << endl;
    
                memset(acount, 0, sizeof(acount));
            }
        }
    
        return 0;
    }


  • 相关阅读:
    开源交易所源码搜集
    域名
    国外大牛博客
    Fomo3D代码分析以及漏洞攻击演示
    Small组件化重构安卓项目
    html span和div的区别
    七牛云
    以太坊钱包安全性保证
    跨域问题
    checkout 到bit/master分支
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7563938.html
Copyright © 2011-2022 走看看