框架
# 初始化 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...