题解 | #称砝码#
称砝码
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))