1. 程式人生 > >LeetCode 53 最大子序列問題

LeetCode 53 最大子序列問題

1.窮舉框架

窮舉框架的思路是:

for 狀態1 in 狀態1的所有取值:
    for 狀態2 in 狀態2的所有取值:
        for ...
            dp[狀態1][狀態2][...] = 擇優(選擇1,選擇2...)

這個題目的“狀態”是一維的,在陣列中的資料迴圈。“選擇”是兩種:放入、不放入。窮舉框架是很容易理解的,困難的是狀態轉移框架,怎麼寫出正確的狀態轉移才是最大的問題的。

2.狀態轉移框架

解釋就是

dp[i]=Math.max(num[i], dp[i-1]+num[i])

dp[] 定義一個一維陣列,將每次的動態轉移過程記錄下來,這個可以看作是基本的問題的。

dp[i]與dp[i-1]與num[i](當前元素)之間的關係是怎麼樣的?其實也是從業