python動態規劃_爬樓梯
阿新 • • 發佈:2019-01-03
# 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] ifn-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 = 0while 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) fori 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()