leetcode 動態規劃

2021-10-06 04:03:56 字數 1145 閱讀 6581

3、動態規劃三要素:重疊子問題、最優子結構、狀態轉移方程

4、狀態轉移方程最難的:

`明確「狀態」 -

> 定義 dp 陣列/函式的含義 -

> 明確「選擇」-

> 明確 base case`

f(0) = 0, f(1) = 1

f(n) = f(n - 1) + f(n - 2), 其中 n > 1.

1、遞迴計算(複雜度高,指數級別)(超時)時間複雜度:o(2^n)

class

solution

}

缺點:重疊子問題多,比如f(18)算了兩次,複雜度為指數級別

2、帶備忘錄的遞迴o(n)

class

solution

return dp[n];}

}

leetcode題解

這個問題可以被分解為一些包含最優子結構的子問題,即它的最優解可以從其子問題的最優解來有效地構建,我們可以使用動態規劃來解決這一問題。

i階可以由以下兩種方法得到: 在第(i-1)階後向上爬1階。 在第(i-2)階後向上爬 2 階。 令 dp[i] 表示能到達第 i階的方法總數: 函式dp[i]=dp[i−1]+dp[i−2]

public

class

solution

int[

] dp =

newint

[n +1]

; dp[1]

=1; dp[2]

=2;for

(int i =

3; i <= n; i++

)return dp[n];}

}

class

solution

return dp[n];}

}

leetcode 動態規劃

題目如下 給定乙個整型陣列,至少有乙個元素,請計算子陣列最大乘積是多少?子陣列必須是原陣列中連續的一串數字構成的陣列。整數可正可負。例如 給定陣列 2,3,2,4 經過計算,得到最大乘積為6。子陣列為 2,3 根據原貼的解題思路,這道題可以用動態規劃來解,但難度在 呢?負負得正,就可惡在這裡。那這個...

Leetcode 動態規劃

題目 原題鏈結在這裡 最長字串鏈。給乙個單詞列表,找乙個詞鏈,使得詞鏈後乙個單詞由前乙個單詞增加乙個字元得到,求最長詞鏈長度。解答 1 根據詞鏈的定義,短的單詞可以由長的單詞減去單詞中乙個字元得到。因此可以先對單詞列表,按照單詞的長度從大到小排序。2 單詞的最大長度為 16,因此可以對於每個單詞 w...

leetcode 動態規劃

題目 給定乙個包含非負整數的 m x n 網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。每次只能向下或者向右移動一步。示例 輸入 1,3,1 1,5,1 4,2,1 輸出 7 解釋 因為路徑 1 3 1 1 1 的總和最小。思路 定義一維陣列dp用於記錄起始點到某一點最小距離,...