题解 | 称砝码

称砝码

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()方法

全部评论

相关推荐

03-04 07:14
门头沟学院 C++
后测速成辅导一两个月...:老板:都给工作机会了还想要工资,哪来这么多好事
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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