0
点赞
收藏
分享

微信扫一扫

python称砝码问题

code_balance 2022-04-04 阅读 57

现有n种砝码,分别为 m1,m2,m3…mn ;
每种砝码对应的数量为 x1,x2,x3...xn 。现在要用这些砝码去称物体的重量(放在同一侧),问能称出多少种不同的重量。

我太笨了,只会穷举法:把砝码一个个放到 lst=[n1,n1,n1,n2,n2,n2,...],然后按照取1个、取2个。取m*n个,依次求和,把和不重复的放到sumlist中。这样数据量太大会超时

from itertools import combinations

l=int(input())
m=[int(i) for i in input().split()]#记录每个砝码重量
n=[int(i) for i in input().split()]#记录每个砝码数量
lst=[0]

for i in range(l):
    for j in range(1,n[i]+1):
        lst.append(m[i])
#lst存所有砝码,一个位置放一个砝码,总如砝码1有2个,砝码2有3个,则lst=[m1,m1,m2,m2,m2]

sumlist=[0]
for i in range(1,len(lst)+1):
#分别取一个砝码、二个砝码。。计算和是否相同,不同的放到sumlist中
    for j in set(combinations(lst,i)):
        if sum(j) not in sumlist:
            sumlist.append(sum(j))

print(len(sumlist))
举报

相关推荐

砝码(1)Python解

【python】砝码称重 蓝桥杯

B - 砝码称重

砝码称重dp

Java POJ 砝码称重

0 条评论