LeetCode 動態規劃(一)

2021-09-24 09:29:25 字數 2093 閱讀 5242

目錄

leetcode前200道題中的動態規劃 

10. 正規表示式匹配

44. 萬用字元匹配

62. 不同路徑

64. 最小路徑和

72. 編輯距離

91. 解碼方法

96. 不同的二叉搜尋樹

95. 不同的二叉搜尋樹 ii

97. 交錯字串

115. 不同的子串行

174. 地下城遊戲

比較難的一道動態規劃,給出兩種方法。

當前位置不是*比較容易,是*的時候要考慮可以不用前面的符號和用多次的問題。

class solution 

return dp[m][n];

}};class solution

return false;//不匹配,返回false

乙個機械人位於乙個 m x n 網格的左上角 (起始點在下圖中標記為「start」 )。

機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角(在下圖中標記為「finish」)。

問總共有多少條不同的路徑?

class solution 

return dp[n][m]; }};

一條包含字母 a-z 的訊息通過以下方式進行了編碼:

'a' -> 1

'b' -> 2

...'z' -> 26

給定乙個只包含數字的非空字串,請計算解碼方法的總數。

示例 1:

輸入: "12"

輸出: 2

解釋: 它可以解碼為 "ab"(1 2)或者 "l"(12)。

class solution 

return dp[n];}};

給定乙個整數 n,求以 1 ... n 為節點組成的二叉搜尋樹有多少種?

dp[i] : i個節點可以組成的二叉搜尋樹的個數。

可以得遞推式:dp[i] = dp[0] * dp[i-1] + dp[1] * dp[i-2] * .......

初始化:dp[0] = dp[1] = 1;

字串上簡單的動規即可:

字串上簡單動規:

dp[i][j] = dp[i-1][j];(不用s中當前的字元)

如果是s[i] == t[i]的話,d[i][j] += dp[i-1][j-1];

class solution 

return dp[0][0]+1;}};

動態規劃 一

在現實生活中,有一類活動的過程,由於它的特殊性,可將過程分程若干個互相聯絡的階段,在它的每一階段都需要作出決策,從而使整個過程達到最好的活動效果。當然,各個階段決策的選取不是任意確定的,它依賴於當前面臨的狀態,又印象以後的發展,當各個階段決策確定後,就組成乙個決策序列,因而也就確定了整個過程的一條活...

動態規劃(一)

動態規劃的兩種常用形式 1 遞迴型 在函式中呼叫自身 優點 直觀,容易編寫 缺點 可能會因為遞迴層數太深導致爆棧,函式呼叫帶來額外時間開銷。無法使用滾動陣列節省空間。總體來說,比遞推型慢。2 遞推型 for迴圈 效率高,有可能使用滾動陣列節省空間。有的問題只能用遞迴解決,有的問題既可以用遞迴,也可以...

動態規劃 (一)

對於動態規劃的學習總共進行了兩節課,到現在為止還是一頭霧水,雖然看懂了老師上課講的例題,但是做v judge的時候還是都不太會,我主要認為我只知道了動態規劃的基本思想,就是將乙個大的問題,分成若干個小問題,但與貪心演算法不同的是,動態規劃中的每乙個小問題之間都相互影響,在每一步都取得最優解,且在不斷...