一、题目
二、示例
三、代码
while True:
try:
n = int(input())
m = list(map(int, input().split()))
x = list(map(int, input().split()))
list1 = []
for i in range(n):
list1.extend([m[i]]*x[i])
result = {0}
for item1 in list1:
for item2 in list(result):
result.add(item1 + item2)
print(len(result))
except:
break
四、算法说明
- 根据输入顺序,将所有的砝码用数字表示出来:将
x
个质量为m
的砝码用数字表示,即在列表list1
中存入x
个值为m
的数字;
- 建立空的集合
result
,初始化为{0}
,用来存储当前砝码能产生的重量种类,并去重;
- 遍历当前砝码
item1
时,则将result
中所有元素item2
与item1
进行求和(item1 + item2)
之后存入集合result
;
- 重复上述步骤加入所有砝码,
result
的元素个数即为产生的重量种类组合。
胡萝卜
我不知道将去向何方,但我已在路上! |
时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 ! |