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'類型不可調用。 –