1
这就是我的代码:查找乘船的成本最低,使用递归和缓存
def O_C(n, prices, start=1, memo=None):
if start == n:
return 0
if memo is None:
memo = {}
if start not in memo:
options = []
for i in range(start + 1, n + 1):
options.append(prices(start, i) + O_C(n, prices, i, memo))
memo[start] = min(options)
return memo[start]
# O_C stands for Optimal Cost
def make_random_prices(N):
import random
prices = {}
for i in range(1, N + 1):
for j in range(i + 1, N + 1):
prices[(i, j)] = random.randint(1, 10*N)
return prices
prices = make_random_prices(100)
print O_C(100, prices)
错误我一直不断地得到:
Traceback (most recent call last):
File "/Users/Ori/Desktop/OneDrive - mail.tau.ac.il/Python/test/recursion.py", line 48, in <module>
print O_C(100, prices)
File "/Users/Ori/Desktop/OneDrive - mail.tau.ac.il/Python/test/recursion.py", line 32, in O_C
options.append(prices(start, i) + O_C(n, prices, i, memo))
TypeError: 'dict' object is not callable
上找不到这个网站的任何引用,也不在任何其他,在这种情况下,这个错误。 递归调用可能是错误的?
你期待'价格(开始,我)'做什么?你的意思是[价格[(start,i)]',就像你在'make_random_prices'中做的那样? – jonrsharpe
你不应该使用价格[(开始,我)]'而不是价格(开始,我)? – Fallen
错误消息是不言自明的。你正试图调用一个'dict'类型的对象。您可以看到“价格”是一个“字典”,您将其定义为“价格= {}”。然后,在'O_C'中,您尝试调用它:'prices(start,i)',但'dict'类型不可调用。 –