题解 | #称砝码#DFS做法
称砝码
https://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c
mport copy # 会报运行超时,仅练习DFS用
def dfs(index):
if index == len(fama):
temp2 = copy.deepcopy(temp)
res.append(temp2)
return
for i in range(2):
if visit[index]:
visit[index] = False
if i == 0:
temp[index] = fama[0]
else:
temp[index] = fama[index]
dfs(index + 1)
visit[index] = True
while True:
try:
class_num = int(input().strip())
m = list(map(int, input().strip().split(' ')))
x = list(map(int, input().strip().split(' ')))
fama = [0]
for i in range(class_num):
for j in range(x[i]):
fama.append(m[i])
# print(fama)
visit = [True] * len(fama)
temp = [''] * len(fama)
res = []
dfs(0)
summary = []
for i in res:
summary.append(sum(i))
summary = set(summary)
print(len(summary))
except:
break
