DP 使用最小花費爬樓梯

2022-01-15 12:41:24 字數 1244 閱讀 4272

陣列的每個索引做為乙個階梯,第 i個階梯對應著乙個非負數的體力花費值 cost[i](索引從0開始)。

每當你爬上乙個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬乙個階梯或者爬兩個階梯。

您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1 的元素作為初始階梯。

示例 1:

輸入: cost = [10, 15, 20]

輸出: 15

解釋: 最低花費是從cost[1]開始,然後走兩步即可到階梯頂,一共花費15。

示例 2:

輸入: cost = [1, 100, 1, 1, 1, 100, 1, 1, 100, 1]

輸出: 6

解釋: 最低花費方式是從cost[0]開始,逐個經過那些1,跳過cost[3],一共花費6。

注意:

cost 的長度將會在 [2, 1000]。

每乙個 cost[i] 將會是乙個integer型別,範圍為 [0, 999]。

思路:題目已經說了2~1000,因此無須特判。

1.每乙個位置可以上一層,可以上兩層。

2.在同乙個階梯上一層以及上兩層的體力花費一樣,但是不同階梯花費不一樣。

3.狀態方程dp[i] = cost[i] + min(dp[i-1], dp[i-2]);

4.輸出min(dp[costsize-1],dp[costsize-2]).

類似於爬樓梯,每一階都有兩種選擇,這一階的方法就是f[n-1]+f[n-2]種方法,而這裡是收費,每個狀態的費用都得到了記錄,取兩種上樓方法種花費少的

那一種,最後輸出也是,因為上最後一階可能會有兩種情況,所以取最小。

1

int mincostclimbingstairs(int* cost, int

costsize)212

return dp[costsize-1] < dp[costsize-2] ? dp[costsize-1] : dp[costsize - 2

];13 }

使用最小花費爬樓梯

陣列的每個索引做為乙個階梯,第 i個階梯對應著乙個非負數的體力花費值 cost i 索引從0開始 每當你爬上乙個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬乙個階梯或者爬兩個階梯。您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1 的元素作為初始階梯。示例 1 輸入 ...

使用最小花費爬樓梯

力扣第746題 本題為 動態規劃題 首先我們可以先建立乙個新的陣列 與原陣列長度相同 為保證體力值消耗最小,因此我們應取最小值。建立乙個新陣列,保證與原陣列長度相同 int arr new int cost.length 接著我們分析題,每次走一步或者兩步,因此保證前兩項數值不變,從索引2開始依次對...

使用最小花費爬樓梯

陣列的每個下標作為乙個階梯,第 i 個階梯對應著乙個非負數的體力花費值 cost i 下標從 0 開始 每當你爬上乙個階梯你都要花費對應的體力值,一旦支付了相應的體力值,你就可以選擇向上爬乙個階梯或者爬兩個階梯。請你找出達到樓層頂部的最低花費。在開始時,你可以選擇從下標為 0 或 1 的元素作為初始...