力扣 動態規劃 下降路徑最小和

2021-09-12 12:03:33 字數 1419 閱讀 8753

描述

給定乙個方形整數陣列 a,我們想要得到通過 a 的下降路徑的最小和。

下降路徑可以從第一行中的任何元素開始,並從每一行中選擇乙個元素。在下一行選擇的元素和當前行所選元素最多相隔一列。

示例:

輸入:[[1,2,3],[4,5,6],[7,8,9]]

輸出:12

解釋:可能的下降路徑有:

[1,4,7], [1,4,8], [1,5,7], [1,5,8], [1,5,9]

[2,4,7], [2,4,8], [2,5,7], [2,5,8], [2,5,9], [2,6,8], [2,6,9]

[3,5,7], [3,5,8], [3,5,9], [3,6,8], [3,6,9]

和最小的下降路徑是 [1,4,7],所以答案是 12。

1 <= a.length == a[0].length <= 100

-100 <= a[i][j] <= 100

思想

用乙個二維陣列儲存每行中每個數當前的最小值

感覺這道題很簡單,具體直接看**吧

另外這道題只給了python的寫法

這道題實在不想用c++寫了。。。

python code

class

solution

:def

minfallingpathsum

(self, a: list[list[

int]])

->

int:

a_length =

len(a)

dp =[[

0for i in

range

(a_length)

]for i in

range

(a_length)

]for i in

range

(a_length)

: dp[0]

[i]= a[0]

[i]for i in

range(1

, a_length)

:for j in

range

(a_length)

: dp[i]

[j]= a[i]

[j]+

min(

min(dp[i -1]

[j: j -

2if j -

1>

0else

none:-

1]),

min(dp[i -1]

[j:j +2]

))return

min(dp[a_length -1]

)

力扣 動態規劃

設爬x層的梯子的方法有f x 種,那麼f x f x 1 f x 2 爬1層梯子的方式有一種 爬2層梯子的方式有兩種 爬3層梯子的方式有三種 爬4層梯子的方式有五種 classsolution int rev newint n 1 rev 0 0 rev 1 1 rev 2 2 for inti 3...

力扣 動態規劃 不同路徑

描述 乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 問總共有多少條不同的路徑?例如,上圖是乙個7 x 3 的網格。有多少可能的路徑?說明 m 和 n 的值均不超過 100。...

力扣 動態規劃 最低票價

問題描述 在乙個火車旅行很受歡迎的國度,你提前一年計劃了一些火車旅行。在接下來的一年裡,你要旅行的日子將以乙個名為 days 的陣列給出。每一項是乙個從 1 到 365 的整數。火車票有三種不同的銷售方式 一張為期一天的通行證售價為 costs 0 美元 一張為期七天的通行證售價為 costs 1 ...