擅长:python、mysql、java
<p>如果你从最后一次暂停向后工作,问题就可以简化。考虑以下代码:</p>
<pre><code>import itertools
test = [3,1,2,3]
cum_cost = 0
for num_visits in range(1,len(test)+1):
print('Number of Visits: ',num_visits)
for end_stall in test:
print('\tEnd Stall',end_stall)
remaining_stalls = test[:]
remaining_stalls.remove(end_stall)
visits_left = num_visits - 1
stalls_left = len(remaining_stalls)
perms = itertools.permutations(remaining_stalls,visits_left)
perms1, perms2 = itertools.tee(perms)
p = [perm for perm in perms1]
s = sum([sum(perm)+end_stall for perm in perms2])*end_stall
print('\t\tVisits left',visits_left)
print('\t\tStalls left',stalls_left)
print('\t\tpermutations',p)
print('\t\tSum',s,' Running Sum',cum_cost)
cum_cost+=s
print('\n')
print('Grand Total',cum_cost)
</code></pre>
<p>通过取消“最后一个摊位”(因为我们在倒推),我们找到了参加其他摊位的所有可能组合。然后我们可以计算出每一个的成本,并将它们加到一个总成本中。在</p>