最低通行費 線性DP

2021-10-14 12:23:17 字數 1223 閱讀 9704

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

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

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

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

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

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

請問至少需要多少費用?

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

輸入格式

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

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

輸出格式

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

資料範圍

1≤n≤100

輸入樣例:51

46810

25715

17689

1820

1011

1219

2120

2325

2933

輸出樣例:

109樣例解釋

樣例中,最小值為109=1

+2+5

+7+9

+12+19

+21+33

#include

#include

using

namespace std;

const

int n =

110;

int n;

int w[n]

[n];

int f[n]

[n];

intmain()

for(

int i =

1; i <= n; i ++

)for

(int j =

1; j <= n; j ++)if

(i==

1&&j==

1)f[i]

[j]=w[i]

[j];

else

f[i]

[j]=

min(f[i -1]

[j], f[i]

[j -1]

)+ w[i]

[j];

printf

("%d\n"

, f[n]

[n])

;return0;

}

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

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

最低通行費

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

7614 最低通行費

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