動態求解陣列中不相鄰元素最大和。
import numpy as np
arr =[1
,2,4
,1,7
,8,3
,32,55
,3,2
,432,6
]# 題目要求:從陣列中挑出不相鄰的元素加起來求sum的最大值
# 動態規劃 非遞迴
defdp_opt
(arr)
:# 建立乙個arr長度大小的元素全部為0的陣列
# arr是原陣列
# opt是存放和的陣列
opt = np.zeros(
len(arr)
) opt[0]
= arr[0]
; opt[1]
=max
(arr[0]
,arr[1]
)for i in
range(2
,len
(arr)):
a = opt[i-2]
+arr[i]
; b = opt[i-1]
; opt[i]
=max
(a,b)
# 迴圈執行完畢後opt陣列中最後乙個元素為最大值
return opt[
len(arr)-1
]print
(dp_opt(arr)
)
演算法 動態規劃(2)
練習2 在一組數中選擇幾個數字使其加起來和最大,但是選中的幾個數字不能相鄰,求最大的和 以以下這組資料舉栗子 我們依舊是之前的思想 選或者不選!依舊是最優解opt i 代表到第i個元素最優解是什麼 代表選擇第i個 代表不選擇第i個 我們發現這個展開圖中依舊出現了重疊子問題 比如opt 3 和opt ...
演算法導論 2 動態規劃
動態規劃與分治方法類似,都是通過組合子問題的解來求解原問題 需要注意的是,動態規劃 dynamic programming 這裡的programming並不是指編寫電腦程式,而是指一種 法 分治方法將問題劃分為互不相交的子問題,遞迴地求解子問題,再將它們的解組合起來,求出原問題的解 動態規劃也是通過...
動態規劃演算法2
今天用了遞迴來解決昨天鋼管的最有切割問題,如下 include include include using namespace std int cut rod int p,int n int p 1000 int main else return q 如果各位有好的計算時間的函式,或給陣列前幾個元素...