DP 線性DP 邊界 細節 最低通行費

2021-10-05 03:07:34 字數 1756 閱讀 7452

乙個商人穿過乙個n×n的正方形的網格,去參加乙個非常重要的商務活動。

他要從網格的左上角進,右下角出。

每穿越中間1個小方格,都要花費1個單位時間。

商人必須在(2n-1)個單位時間穿越出去。

而在經過中間的每個小方格時,都需要繳納一定的費用。

這個商人期望在規定時間內用最少費用穿越出去。

請問至少需要多少費用?

注意:不能對角穿越各個小方格(即,只能向上下左右四個方向移動且不能離開網格)。

輸入格式

第一行是乙個整數,表示正方形的寬度n。

後面n行,每行n個不大於100的整數,為網格上每個小方格的費用。

輸出格式

輸出乙個整數,表示至少需要的費用。

資料範圍

1≤n≤100

輸入樣例:

51 4 6 8 10

2 5 7 15 17

6 8 9 18 20

10 11 12 19 21

20 23 25 29 33

輸出樣例:

109樣例解釋

樣例中,最小值為109=1+2+5+7+9+12+19+21+33。

分析:

一 道比

較簡單的

線性dp

題,細節

方面需要

注意一下

。一道比較簡單的線性dp題,細節方面需要注意一下。

一道比較簡單

的線性d

p題,細

節方面需

要注意一

下。 ①、這

裡是求的

最小值,

陣列初始

化是0的

話會導致

答案出錯

。①、這裡是求的最小值,陣列初始化是0的話會導致答案出錯。

①、這裡是求

的最小值

,陣列初

始化是0

的話會導

致答案出

錯。 ②、邊

界處理:

f[1]

[1]=

w[1]

[1],

且僅當i

−1

>=1

時才能從

(i−1

,j)轉

移而來。

同理j−

1>=1

時才能從

(i,j

−1)轉

移而來。

②、邊界處理:f[1][1]=w[1][1],且僅當i-1>=1時才能從(i-1,j)轉移而來。\\\qquad同理j-1>=1時才能從(i,j-1)轉移而來。

②、邊界處理

:f[1

][1]

=w[1

][1]

,且僅當

i−1>=1

時才能從

(i−1

,j)轉

移而來。

同理j−

1>=1

時才能從

(i,j

−1)轉

移而來。

**:

#include

#include

using

namespace std;

const

int n=

110;

int n,w[n]

[n],f[n]

[n];

intmain()

cout<[n]

}

最低通行費 線性DP

乙個商人穿過乙個n n的正方形的網格,去參加乙個非常重要的商務活動。他要從網格的左上角進,右下角出。每穿越中間1個小方格,都要花費1個單位時間。商人必須在 2n 1 個單位時間穿越出去。而在經過中間的每個小方格時,都需要繳納一定的費用。這個商人期望在規定時間內用最少費用穿越出去。請問至少需要多少費用...

最低通行費

描述 乙個商人穿過乙個 n n 的正方形的網格,去參加乙個非常重要的商務活動。他要從網格的左上角進,右下角出。每穿越中間1個小方格,都要花費1個單位時間。商人必須在 2n 1 個單位時間穿越出去。而在經過中間的每個小方格時,都需要繳納一定的費用。這個商人期望在規定時間內用最少費用穿越出去。請問至少需...

7614 最低通行費

總時間限制 1000ms 記憶體限制 65536kb 描述 乙個商人穿過乙個 n n 的正方形的網格,去參加乙個非常重要的商務活動。他要從網格的左上角進,右下角出。每穿越中間1個小方格,都要花費1個單位時間。商人必須在 2n 1 個單位時間穿越出去。而在經過中間的每個小方格時,都需要繳納一定的費用。...