<NOIP> 20 . P1598 垂直柱状图
来源:互联网 发布:软件设计师资格证书 编辑:程序博客网 时间:2024/06/06 00:48
题解:这是洛谷的第20道题目,本题的难点不在于字符的统计,而是星号字符的打印。
注意
1 . 我们可以这样来,假设我们已经做完了字符的统计。
2 . 按行输出:因为最终输出的都是最后一行平齐,所以我们可以在字符统计中得到出现次数最多的字符和出现的次数N,遍历A到Z,哪个字符能出现N次,打印“*”;接着,再遍历A到Z,哪个字符出现了的次数大于等于N-1,输出“*”。直到N==0。
源代码:
#include <stdio.h>#include <iostream>#include <string.h>#include <sstream>#include <stdlib.h>using namespace std;#define SIZE 26void add(const string str, int *number){ for (size_t i = 0; i < str.size(); i++) { switch (str[i]) { case 'A': number[0]++; break; case 'B': number[1]++; break; case 'C': number[2]++; break; case 'D': number[3]++; break; case 'E': number[4]++; break; case 'F': number[5]++; break; case 'G': number[6]++; break; case 'H': number[7]++; break; case 'I': number[8]++; break; case 'J': number[9]++; break; case 'K': number[10]++; break; case 'L': number[11]++; break; case 'M': number[12]++; break; case 'N': number[13]++; break; case 'O': number[14]++; break; case 'P': number[15]++; break; case 'Q': number[16]++; break; case 'R': number[17]++; break; case 'S': number[18]++; break; case 'T': number[19]++; break; case 'U': number[20]++; break; case 'V': number[21]++; break; case 'W': number[22]++; break; case 'X': number[23]++; break; case 'Y': number[24]++; break; case 'Z': number[25]++; break; default: break; } }}int main(){ char a, b, c, d; string str1, str2, str3, str4; int number[SIZE], counter = 0, max = 0; //string不接受空格 getline(cin, str1); getline(cin, str2); getline(cin, str3); getline(cin, str4); memset(number, 0, sizeof(number)); add(str1, number); add(str2, number); add(str3, number); add(str4, number); for (size_t i = 0; i < 26; i++) if (max < number[i]) max = number[i]; //paint for (int i = max; i >0; i--) { for (size_t j = 0; j < SIZE; j++) { if (number[j] >= i &&j < SIZE - 1) cout << "* "; else if (number[j] >= i &&j == SIZE - 1) cout << "*"; else if (j < SIZE - 1) cout << " "; else cout << " "; } cout << endl; } for (size_t i = 0; i < SIZE; i++) { putchar('A' + i); cout << " "; } cout << endl; system("pause"); return 0;}
阅读全文
0 0
- <NOIP> 20 . P1598 垂直柱状图
- 洛谷P1598 垂直柱状图
- P1598 垂直柱状图(洛谷)
- P1598 垂直柱状图
- luogu P1598 垂直柱状图
- 垂直柱状图
- 垂直柱状图
- matlab 水平垂直柱状图
- 新手村 简单字符串 垂直柱状图
- 【题解】洛谷1598 垂直柱状图
- 柱状图
- 柱状图
- 柱状图
- 柱状图
- 柱状图
- 柱状图
- 柱状图
- 柱状图
- 关于android百度地图个性化地图
- 信号的稀疏表示
- mysql 1055
- 服务器配置
- Matlab图形绘制经典案例 (2)
- <NOIP> 20 . P1598 垂直柱状图
- tp3.2中三表联查(join和 left join)
- 只包含因子2 3 5的数 51nod1010
- 堆的判断(1098)
- nio3
- netty之Future和ChannelFuture
- C++下的Date类编写
- 58. Length of Last Word
- 10. 电池曲线