0
点赞
收藏
分享

微信扫一扫

直方图———绘图


文章目录

  • ​​1 题目​​
  • ​​2 解析​​
  • ​​2.1 题意​​
  • ​​2.2 思路​​
  • ​​3 参考代码​​

1 题目

直方图
时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小)
题目描述
又到年底统计报表的时间了。我们公司一共生产“0”到“9”十种产品,现在给你一份销售记录,请你帮忙绘制一份直方图。

输入描述:
输入包含多组数据,每组数据包含一个字符串s。
s仅包含数字,长度不超过100。

输出描述:
对应每一组数据,依次为十种产品绘制高度等于其销量的“*”柱图。
直方图的高度等于数据中数量最多产品的个数,如果某种产品高度不到直方图的高度,用空格补全。
直方图下方依次输出0到9作为坐标。

输入例子:
0123456789123
123012312

输出例子:

0123456789
**

0123456789

2 解析

2.1 题意

统计每个出现的次数,画出图形

2.2 思路

模拟

3 参考代码

#include 
#include
#include
#include

using std::string;
using std::cin;

int table[10];

int main(int argc, char const *argv[]){
string str;
while(getline(cin, str)){
memset(table, 0, sizeof(table));

int maxNum = -1;//记录数量的最大值
for (int i = 0; i < str.length(); ++i) {//统计个数
int idx = str[i] - '0';
table[idx]++;
if(table[idx] > maxNum){
maxNum = table[idx];
}
}

for (int j = maxNum; j >= 1; --j) {//绘图
for (int i = 0; i <= 9; ++i) {
if(table[i] == j){
table[i]--;
printf("*");
}else{
printf(" ");
}
}
printf("\n");
}
printf("0123456789\n");
}
return 0;
}

举报

相关推荐

1115:直方图

0 条评论