動態規劃的案例python(1)

2021-10-04 22:38:59 字數 1099 閱讀 4740

:一組數中不能相鄰的幾個數選出來組成的和最大

比如[4,1,1,9,1] 我們可以選擇[4,1,1],[1,9],[4,9],但是只有[4,9]比較大

例如:標號i:0 1 2 3 4 5 6

—arr: 1 2 4 1 7 8 3

設opt(i) 為最佳選法。我們倒著看,

開始是opt(6),如果選6號位的3,

arr =[1

,2,4

,1,7

,8,3

]def

rec_opt

(arr, i)

:if i ==0:

return arr[0]

elif i ==1:

return

max(arr[0]

, arr[1]

)else

: a = rec_opt(arr, i -2)

+ arr[i]

b = rec_opt(arr, i -1)

return

max(a, b)

result = rec_opt(arr,6)

print

(result)

# 輸出15

上面是遞迴解法,會有很多重複,演算法複雜度時o(2**n)

下面我們把它存在陣列中做:

def

dp_opt

(arr)

: opt = 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)

return opt[

len(arr)-1

]result = dp_opt(arr)

print

(result)

動態規劃的案例python(2)

1題目 給乙個陣列和乙個數,從這個陣列找出幾個數的和是這個數。比如 9,如果可以找到比如4 5 9,則返回true 動態規劃分析 arr 下標i 0 1 2 3 4 5 這裡我們設定函式subset i,s 我們輸入i 是下標,s是要組合的數。開始當i 是5時,表示為subset arr 5 9 後...

學習Python的日子 Python(1)

第一天學習,沒有學太多的編碼語言,就簡單學習了一些格式 python 安裝軟體 sudo apt get install 軟體名 ftp 安裝ftp 登入 ftp ip 注意 mac ubuntu ftp 192.168.28.46 exit bye 互動式 python3 python print...

python 1 函式物件

函式 function 作為程式語言中不可或缺的一部分,但函式作為第一類物件 first class object 卻是 python 函式的一大特性。那到底什麼是第一類物件 first class object 呢?在 python 中萬物皆為物件,函式也不例外,函式作為物件可以賦值給乙個變數 可...