動態規劃 網格非降路徑

2021-10-06 08:29:41 字數 1894 閱讀 2373

題目

給定乙個包含非負整數的 m x n 網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。

說明:每次只能向下或者向右移動一步。

示例

輸入:

[ [1,3,1],

[1,5,1],

[4,2,1]

]輸出: 7

解釋: 因為路徑 1→3→1→1→1 的總和最小。

**

class

solution

for(

int i = leni-

1; i>=

0; i--)}

return dp[0]

[0];

}};

題目

給定乙個方形整數陣列 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。

**

class

solution

else

if(j == lenj -1)

else}}

int res = int_max;

for(

int j =

0; j < lenj; j++

) res =

min(res, dp[0]

[j])

;return res;}}

;

題目

給你乙個整數方陣 arr ,定義「非零偏移下降路徑」為:從 arr 陣列中的每一行選擇乙個數字,且按順序選出來的數字中,相鄰數字不在原陣列的同一列。

請你返回非零偏移下降路徑數字和的最小值。

示例

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

輸出:13

解釋:所有非零偏移下降路徑包括:

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

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

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

下降路徑中數字和最小的是 [1,5,7] ,所以答案是 13 。

**

class

solution

dp[i]

[j]= res + arr[i]

[j];}}

}int res = int_max;

for(

int j =

0; j < lenj; j++

) res =

min(res, dp[0]

[j])

;return res;}}

;

動態規劃 最長非降子串行

先分享一篇文章 動態規劃 從新手到專家 作者正是通過這篇文章來學習的。文中對動態規劃的設計思想做了非常詳細的介紹,並通過簡單問題和複雜問題對動態規劃的設計流程進行剖析,以下是作者和出處 先介紹下問題,給定長度為n的整數序列 a 1 a 2 a n 求得其中最長非降子串行的長度,即lis longes...

動態規劃 最長非降子串行

乙個序列有n個數 a 1 a 2 a n 求出最長非降子串行的長度。講dp基本都會講到的乙個問題lis longest increasing subsequence 正如上面我們講的,面對這樣乙個問題,我們首先要定義乙個 狀態 來代表它的子問題,並且找到它的解。注意,大部分情況下,某個狀態只與它前面...

動態規劃之最長非降 公升 子串行

問題描述 在乙個無序的序列a1,a2,am裡,找到乙個最長的序列,滿足ai aj.ak 且i問題分析 如果前i 1個數中的最長非降子串行的最後乙個數是ak 那麼下一步就是在求前k 1個數中的的最長非降子串行 因此我們可以設計乙個狀態opt j 表示前i個數中用到a i 所構成的最優解 核心 那麼決策...