题解 | #称砝码#

称砝码

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))

全部评论

相关推荐

Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务