文章目录
- 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;
}