2020 10 01 動態規劃 回溯

2021-10-09 22:40:51 字數 1514 閱讀 8563

框架

# 初始化 base case

dp[0][0][...] = base

# 進行狀態轉移

for 狀態1 in 狀態1的所有取值:

for 狀態2 in 狀態2的所有取值:

for ...

dp[狀態1][狀態2][...] = 求最值(選擇1,選擇2...)

509. 斐波那契數

var

fib=

function(n

)return cur;

};

322. 零錢兌換

var

coinchange

=function

(coins, amount)

dp[i]

= math.

min(dp[i],1

+dp[i-coin])}

}return dp[amount]

=== amount+1?

-1: dp[amount];}

;

框架

result = 

def backtrack(路徑, 選擇列表):

if 滿足結束條件:

result.add(路徑)

return

for 選擇 in 選擇列表:

做選擇backtrack(路徑, 選擇列表)

撤銷選擇

46. 全排列

var

permute

=function

(nums)}}

};

51. n 皇后

var

solvenqueens

=function

(n)backtrack

(board,0)

;return res;

// board記錄棋盤狀態 row記錄決策到哪一行

function

backtrack

(board, row)

res.

push

(tmp)

;return;}

for(

let i=

0; i}function

isvalid

(board, row, col)

// 判斷 左上

for(

let i=row-

1, j=col-

1; i>=

0&& j>=

0; i--

, j--

)// 判斷 右上

for(

let i=row-

1, j=col+

1; i>=

0&& j, j++

)return

true;}

};

01揹包(動態規劃(回溯))

include 所謂動態規劃,就是分治策略加上不同的區域之間相互影響,如何從區域性最優解,到全域性最優解,這便是我們所關注的重點,因為還是分割成一塊一塊的,遞迴入手更好去理解。現有n件物品,其中第i件物品的重量為w i 價值為v i 有一容量為j的揹包,求在不超過揹包容量的情況下,使取得的商品的價值...

動態規劃回溯 dp回溯查詢可行解

題目背景 三水非常喜歡吃水果撈,但是每次她都吃不完一整盒果撈,就會吃飽,而吃得太飽會不舒服。對於果撈裡的每一塊水果,三水都有不同的喜愛程度。她希望在不吃得太飽的基礎上,可以盡可能多地吃掉自己喜歡的水果。你能幫幫她嗎?題目描述 吃飽的時候三水的飽腹感為w w 10000 w w 10000 w w 1...

LeetCode 自由之路(動態規劃 回溯法)

輸入 ring godding key gd 輸出 4 解釋 對於 key 的第乙個字元 g 已經在正確的位置,我們只需要1步來拼寫這個字元。對於 key 的第二個字元 d 我們需要逆時針旋轉 ring godding 2步使它變成 ddinggo 當然,我們還需要1步進行拼寫。因此最終的輸出是 4...