2013-05-17 103 views
0

我正在爲動態編程練習 和im新的python以及。 當我在shell中嘗試這個。Python實現杆切割算法

def cut_rod(p, n): 
    if n==0: 
     return 0 
    q = float('-inf') 
    for i in range(n): 
     q = max(q, p[i] + cut_rod(p, n-1-i)) 
    return q 

p = [1,5,8,9,10,17,17,20,24,30] 
print(timeit.repeat("cut_rod(p, 4)", "from __main__ import cut_rod", 
       number =1000)) 

它警告我p不是全局變量。在timeit函數 不是已經是一個全局變量?

回答

2

的問題是,你是不是進口p

print(timeit.repeat("cut_rod(p, 4)", "from __main__ import cut_rod, p", 
       number =1000)) 

timeit執行受控環境中的代碼,因此你必須明確地傳遞由語句所需的一切。