42 動態規劃實戰

2021-10-04 18:44:22 字數 2279 閱讀 8043

最長公共子串長度

表示字串相似程度大小

萊文斯坦距離回溯演算法分析

var a =

'mitcmu'

.split(''

)var b =

'mtacnu'

.split(''

)var n = a.length

var m = b.length

var mindist =

infinity

var dict =

//字典(重複子問題優化)key: `i,j` value: edits,f(

0,0,

0)mindist //3

/** 指標 i - a字串的當前比較位置

指標 j - b字串的當前比較位置

edits - 編輯操作(增刪改)的次數

*/function

f(i, j, edits),$

`]if(dictval && dictval <= edits)

else,$

`]= edits

}//遞迴終止條件

if(i == n || j == m)

if(a[i]

== b[j]

)else

}

left =

f(i-

1,j)

top =

f(i,j-1)

lt =

f(i-

1,j-1)

if(a[i]

== b[j]

)else

f

('mitcmu'

,'mtacnu'

)//3f(

'mitcmu'

,'mitcmu'

)//0f(

'mitcmmu'

,'mitcmum'

)//2

function

f(a,b)

findsame =

false

for(

let j=

0;j)for

(let i=

1;ireturn mindist[n-1]

[m-1

]}

fun

('mitcmu'

,'mtacnu'

)//3

fun(

'mitcmu'

,'mitcmu'

)//0

fun(

'mitcmmu'

,'mitcmum'

)//2

fun(

'mitcmu'

,'mitcmub'

)//1

function

fun(a,b)

return math.

min(l,t,lt)

}}

left =

f(i-

1,j)

top =

f(i,j-1)

lt =

f(i-

1,j-1)

if(a[i]

== b[j]

)else

fun

('mitcmu'

,'mtacnu'

)//4

fun(

'mitcmu'

,'mitcmu'

)//6

fun(

'mitcmmu'

,'mitcmum'

)//6

fun(

'mit'

,'mitcmub'

)//3

function

fun(a,b)

return math.

max(l,t,lt)

}}

f([

2,9,

3,6,

5,1,

7])//4f(

[1,2

,3,1

])//3function

f(arr)

state[i]

= max +1}

console.

log(state)

return math.

max(

...state)

}

動態規劃入門 熱血實戰!

最好的旅行,是在陌生的地方,發現了一種久違的感動。1.poj 3624 include includeusing namespace std int w 3403 d 3403 dp 12881 n,m 注意dp陣列的範圍要開大!否則的話無法ac!會顯示runtime error的!int main...

動態規劃(實戰篇之數塔)

在講述dp演算法的時候,乙個經典的例子就是數塔問題,它是這樣描述的 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?input輸入資料首先包括乙個整數c,表示測試例項的個數,每個測試例項的第一行是乙個整數n 1 n 100 表示數塔的高度,接下來用...

劍指 offer 42(動態規劃)連續陣列的最大值

輸入乙個整型陣列,陣列中的乙個或連續多個整數組成乙個子陣列。求所有子陣列的和的最大值。要求時間複雜度為o n 示例1 輸入 nums 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。1 arr.length 10 5 100 arr i 100 cl...