- 思路:每次加一块砝码,得到所有组合,使用set去重。这是一种思路,我看很大一部分同学都是使用n种不同砝码进行组合,那样的话时间复杂度稍微低一点,实际看个人觉得哪种方式更好理解。
while True:
try:
n = int(input())
m = input().split(" ")
x = input().split(" ")
# mx为所有砝码,比如示例mx为[1, 1, 2]
mx, l = [], {0}
for i in range(n):
mx.extend([int(m[i])] * int(x[i]))
for i in mx:
# 每次加一块砝码,使用union(并集)得到新去重的组合,如果不使用union则稍微麻烦一点,需要考虑循环中改变set
l = l.union({i+j for j in l})
print(len(l))
except:
break