题解 | #称砝码#
称砝码
https://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c
# 输入处理
n = int(input())
m =[int(i) for i in input().split()]
x = [int(i) for i in input().split()]
# 将所有砝码放到一个列表中
lst = [m[i] for i in range(len(m)) for j in range(x[i])]
#初始化(这里如果使用列表后面再set会超时报错)
weight = {0,}#单元素集合
#对每一个weight元素(已称出的重量),都加上新增的砝码重量并添加到weight中
for i in lst:
for j in list(weight):#对于已经称出的重量每一个,list迭代
weight.add(j+ i)#尝试加上一个新砝码,注意每一次内层循环只关注循环开始时的weight情况
#第一次:weight=0,然后因为weight里面无其他了。就让i+1,此时weight在第一次时加上的第一个砝码才起作用,weight=0,1,然后内层让weight加上第二个砝码看看能增加哪些,由于weight是set形式,重复的消了
print(len(weight))
阿里巴巴灵犀互娱公司福利 654人发布