题解 | 称砝码
称砝码
https://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c
import sys
n = int(sys.stdin.readline())
mass = list(map(int,sys.stdin.readline().split())) # 砝码质量
nums = list(map(int,sys.stdin.readline().split())) # 砝码个数
possible_weights = {0}
for m,k in zip(mass,nums):
current_weights = list(possible_weights)
for w in current_weights:
for i in range(k+1):
possible_weights.add(w + m * i)
print(len(possible_weights))
错误点:
1.核心思路:利用集合自动去重的性质
2.规则:Python 有一个严格的规则:不能在遍历一个集合的同时,修改这个集合的大小(增加或删除元素)
3.zip()方法:达到类似“拉链”的效果,将参数中列表中的元素按索引对其合并为集合:zip(lis1,list2)返回的值是列表[(list1[0],list1[0]),(list1[1],list2[1]),...],(短板效应)
4.对集合添加元素使用add()方法
