2013-05-17 69 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执行受控环境中的代码,因此你必须明确地传递由语句所需的一切。