關於動態規劃的一些感想

原文連接:https://leetcode-cn.com/problems/maximum-subarray/solution/xiang-xi-jie-du-dong-tai-gui-hua-de-shi-xian-yi-li/

一般咱們遍歷子串或者子序列有三種遍歷方式

1.  以某個節點爲開頭的全部子序列: 如 [a],[a, b],[ a, b, c] ... 再從以 b 爲開頭的子序列開始遍歷 [b] [b, c]。
2.  根據子序列的長度爲標杆,如先遍歷出子序列長度爲 1 的子序列,在遍歷出長度爲 2 的 等等。
3.  以子序列的結束節點爲基準,先遍歷出以某個節點爲結束的全部子序列,由於每一個節點均可能會是子序列的結束節點,所以要遍歷下整個序列,如: 以 b 爲結束點的全部子序列: [a , b] [b] 以 c 爲結束點的全部子序列: [a, b, c] [b, c] [ c ]。ui

第一種遍歷方式一般用於暴力解法, 第二種遍歷方式 leetcode (5. 最長迴文子串 ) 中的解法就用到了。code

第三種遍歷方式 由於能夠產生遞推關係, 採用動態規劃時, 常常經過此種遍歷方式, 如 揹包問題, 最大公共子串 , 這裏的動態規劃解法也是以 先遍歷出 以某個節點爲結束節點的全部子序列 的思路leetcode

相關文章
相關標籤/搜索