演算法 動態規劃2

2021-10-09 16:00:41 字數 739 閱讀 6685

動態求解陣列中不相鄰元素最大和。

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 如果各位有好的計算時間的函式,或給陣列前幾個元素...