0
点赞
收藏
分享

微信扫一扫

砝码(1)Python解

90哦吼 2022-03-26 阅读 148

题目:

设有 1g,2g,3g,5g,10g,20g 的砝码各若干枚(其总重量 ),要求计算用这些砝码能称出 的不同重量的个数,但不包括一个砝码也不用的情况。

解题思路:

(这道题和一道往届python组砝码题(有空会把这道题也发出来)类似,我用的相同思路,若有更好解法欢迎提出)

首先假如我们有两个砝码,分别是1g,2g。那么称量结果就有1g,2g,3g。这时候如果再来一个2g砝码,我们的做法是在原来[1,2,3]的结果上分别加上2g再填入结果列表。结果为[1,2,3,3,4,5,2],这个最后的2是这个2g砝码单独称重,也要加上。然后我们需要用set()函数把结果列表去重为[1,2,3,4,5]。

通过上面我们不难发现,我们就是先把n个砝码的结果计算出来,再把第n+1个砝码分别加之前的结果(包括该砝码独自称重的结果)append在结果列表之后,然后去除重复部分就好。接下来是实现代码。

代码部分:

num = list(map(int,input().split())) #先接受每个砝码的数量
a = [1,2,3,5,10,20] #该列表是规定的砝码规格
k = 0
b = [] #用来储存所有砝码的重量
for i in num:
    for j in range(i):#每个砝码循环对应的数量,并存储在b列表
        b.append(a[k])
    k += 1
ans = [] #存放所有的结果情况
ans.append(b[0])
for i in range(1,len(b)):#循环所有砝码
    for k in range(len(ans)):#与之前的每个结果相加
        ans.append(b[i]+ans[k])
        ans.append(b[i])#独自称量的结果
    ans = list(set(ans)) #去重
print(len(ans))

希望能对你有所帮助!帮忙点个免费赞吧,谢谢!

举报

相关推荐

【python】砝码称重 蓝桥杯

砝码称重dp

B - 砝码称重

Java POJ 砝码称重

砝码称重 蓝桥杯

0 条评论