dp(動態規劃)思考

2021-10-10 03:01:29 字數 965 閱讀 4506

dp的核心思想是分治策略和表儲存。

分治策略並非dp所獨有,很多演算法都運用了把問題拆解為子問題的做法,比如遞迴。

表儲存應該是dp比較獨有的一種方式,通過儲存一些中間結果,可以避免重複計算,從而提公升程式執行的速度。

def

max_length

(s1,s2)

:# 最大公共子串,用dp求解

max_len,max_str=0,

''# 初始化矩陣

res=[[

0for j in

range

(len

(s2))]

for i in

range

(len

(s1))]

# dp

for i in

range

(len

(s1)):

for j in

range

(len

(s2)):

if s1[i]

==s2[j]

:# 首行或者首列單獨處理

if i==

0or j==0:

res[i]

[j]=

1else

: res[i]

[j]=res[i-1]

[j-1]+

1if max_len[j]:

max_len=res[i]

[j] max_str=s1[i+

1-max_len:i+1]

# 返回最終結果

return max_str,max_len

s1,s2=

'sdakfhdfdasfdsafdsaakjhfabcaaa'

,'fdafdsafdasfewafew'

max_length(s1,s2)

動態規劃 dp

威威貓系列故事 打地鼠 威威貓最近不務正業,每天沉迷於遊戲 打地鼠 每當朋友們勸他別太著迷遊戲,應該好好工作的時候,他總是說,我是威威貓,貓打老鼠就是我的工作!無話可說.我們知道,打地鼠是一款經典小遊戲,規則很簡單 每隔乙個時間段就會從地下冒出乙隻或多隻地鼠,玩遊戲的人要做的就是打地鼠。假設 1 每...

動態規劃,dp

線性動規區間動規樹形動規 區間動規 根據題目要求,全域性最優滿足區域性最優 典型題例 加分二叉樹 洛谷1040 題目介紹 題目描述 設乙個n 個節點的二叉樹t 的中序遍歷為 1,2,3,n 其中數字 1,2,3,n 為節點編號。每個節點都有乙個分數 均為正整數 記第j 個節點的分數為dj。二叉樹t ...

DP動態規劃

include include include include include include includeusing namespace std 動態規劃 利用子問題求解整個問題 關鍵 記錄子問題的解 列出狀態轉移方程 寫法 遞推 由邊界向上,最終得到目標問題的解 遞迴 由目標問題出發,向下遞迴...