:一組數中不能相鄰的幾個數選出來組成的和最大
比如[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 中萬物皆為物件,函式也不例外,函式作為物件可以賦值給乙個變數 可...