1. 程式人生 > >python動態規劃_爬樓梯

python動態規劃_爬樓梯

# coding = UTF-8
import time

def fun(n):
    if n == 0 or n == 1:
        return n+1
else:
     return fun(n -1) + fun(n - 2)

# [1, 2, 3, 5, 8, 13, 21]
# 上臺階的方法數
global dp,f1,f2
f1 = 1
f2 = 2
dp = [1, 2]
def Fun(n):
    global dp,f1,f2
    index = len(dp) -1
if n <= index:
        return dp[n]

    if 
n-1 > index: f1 = Fun(n - 1) if n-2 > index: f2 = Fun(n - 2) # sum = dp[n - 1] + dp[n - 2] dp.append(f1 + f2)   return dp[n - 1] + dp[n - 2] def max_array(price): length = len(price) cache = [1] i = 1 while i < length: cache.append(0) j = 0
while j < i: temp = price[j] + cache[i-1-j] if temp > cache[i]: cache[i] = temp if price[i] > cache[i]: cache[i] = price[i] j += 1 i += 1 return cache def main(): price = [1, 5, 8, 9, 10, 17, 17, 20, 24, 30] cache = max_array(price) for
i in range(10): print(cache[i],end=" ") print() # print(time.clock()) sum = fun(50) print(sum) sum = Fun(100) print(sum) print(dp) if __name__ == "__main__": main()