首页 > 试题广场 >

直方图

[编程题]直方图
  • 热度指数:1780 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
又到年底统计报表的时间了。我们公司一共生产“0”到“9”十种产品,现在给你一份销售记录,请你帮忙绘制一份直方图。

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


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

输入

0123456789123
123012312

输出

 ***      
**********
0123456789
 **       
 ***      
****      
0123456789
num = input()
temp = str(num)
count = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
for i in temp:
    if i == "0":
        count[0] += 1
    elif i == "1":
        count[1] += 1
    elif i == "2":
        count[2] += 1
    elif i == "3":
        count[3] += 1
    elif i == "4":
        count[4] += 1
    elif i == "5":
        count[5] += 1
    elif i == "6":
        count[6] += 1
    elif i == "7":
        count[7] += 1
    elif i == "8":
        count[8] += 1
    elif i == "9":
        count[9] += 1
maxV = max(count)
for i in range(maxV):
    for j in range(10):
        if count[j] < (maxV - i):
            print(" ", end='')
        else:
            print("*", end='')
    print("")
print("0123456789")

为啥自己在VScode中运行这个代码完全没问题,而上传后直接说答案错误?还请大神排忧解难😭
发表于 2020-07-16 15:01:17 回复(1)

python solution:

import sys
from collections import Counter

#从上到下输出直方图
def printHistogram(string):
    c = Counter(string)
    height = c.most_common(1)[0][1]
    for i in range(0, height):
        layer = "" #每一层的字符串
        for num in "0123456789":
            if c[num] + i >= height:  #这个if else是核心逻辑
                layer += "*"
            else:
                layer += " "
        print (layer)

    print("0123456789")


for i in sys.stdin.readlines():
    printHistogram(i)
编辑于 2017-11-17 09:41:52 回复(0)