题解 | #称砝码#

称砝码

https://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c

kind=int(input())   #砝码种类数量
weight=list(map(int,(input().strip()).split(' ')))   #每种砝码的重量
num=list(map(int,(input().strip()).split(' '))) #每种重量砝码的个数

result=[0] #存放能称出的重量
old=[0]                                 #存储result处理前的值
for i in range(kind):                   #遍历选择每种砝码

    for j in range(num[i]):             #遍历第i种砝码中每个砝码
        for k in range(len(result)):    #对已存储能称出的重量 均加上第i种砝码中的第j个

            result[k]+=weight[i]


        result.extend(old)              #用新增第i种砝码中第j个前的result(也就是old),与新的result合并
        result.append(weight[i])        #再加上新增的这个砝码本身
        result = list(set(result))      #去重
        old = result[:]                 #把新的result复制给old用于下一个砝码
                                        #必须使用这种形式复制,如果直接=赋值,则一个变另一个也变


print(len(result))



全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务