乙個商人穿過乙個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 個單位時間穿越出去。而在經過中間的每個小方格時,都需要繳納一定的費用。...