zoukankan      html  css  js  c++  java
  • poj 2136 Vertical Histogram 解题报告

         题目链接:http://poj.org/problem?id=2136

         题意不难理解,就是输入四行字符串(每行字符总数不超过72个),统计26个英文字母的数目,并按柱状图的形式输出。我的思路就是,先用一维数组total[]统计每个英文字母的个数,接着找出最大的频率,保存在max中;紧接着用一个二维数组word[][](这个比较关键)记录每一个字母在0~max中是否存储数据,有的话则置1,没有则为0。(假如:字母'A'的频率是2,max = 10,那么word[0][0] = 0, word[0][1] = 1, word[0][2] = 1, word[0][3] = 0......word[0][10] = 0,代表)接着用两重循环输出表格即可。

         

     1 #include <iostream>
     2 #include <stdio.h>
     3 #include <string.h>
     4 using namespace std;
     5 
     6 const int maxn = 30;
     7 
     8 int main()
     9 {
    10     char s[100];
    11     int i, j, n, len, max, total[maxn], word[maxn][100];
    12     n = 4;
    13     memset(total, 0, sizeof(total));
    14     while (n--)
    15     {
    16         gets(s);
    17         len = strlen(s);
    18         for (i = 0; i < len; i++)
    19         {
    20             total[s[i]-'A']++;    // 统计每个字母出现的次数(total[0]对应'A',total[1]对应'B',依此类推)
    21         }
    22     }
    23     max = total[0];
    24     for (i = 0; i <= 25; i++)
    25     {
    26         if (max < total[i])            // 在所有字母中找出最大的出现次数
    27             max = total[i];
    28     }
    29     memset(word, 0, sizeof(word));
    30     for (i = 0; i <= 25; i++)
    31     {
    32         for (j = 1; j <= total[i]; j++)
    33         {
    34             word[i][j] = 1;    // 标记每个字母出现的数目
    35         }
    36     }
    37     for (i = max; i > 0; i--)
    38     {
    39         for (j = 0; j <= 25; j++)
    40         {
    41             if (!word[j][i] && j == 0)
    42             {
    43                 printf(" ");
    44             }
    45             else if (word[j][i] && j == 0)
    46                 printf("*");
    47             else if (!word[j][i])
    48                 printf("  ");
    49             else if (word[j][i])
    50                 printf(" *");
    51         }
    52         printf("\n");
    53     }
    54     for (i = 0; i <= 25; i++)
    55     {
    56         if (i == 0)
    57             printf("%c", i + 'A');
    58         else
    59             printf(" %c", i + 'A');  
    60     } 
    61     printf("\n");
    62     return 0;
    63 }
  • 相关阅读:
    Shell xargs
    I2C总线图
    JS判断输入的字符串是否为数字
    CDN
    ④.linux基础之"字符集"
    01创建证书和环境准备
    梦的蒲公英
    java web项目部署遇到的jar cannot read的问题
    textbox icon jquery 插件
    解决双硬盘安装windows出现“安装程序无法定位现有系统分区,也无法创建新的系统分区”错误
  • 原文地址:https://www.cnblogs.com/windysai/p/3204510.html
Copyright © 2011-2022 走看看