5:最低通行費
描述乙個商人穿過乙個 n*n 的正方形的網格,去參加乙個非常重要的商務活動。他要從網格的左上角進,右下角出。每穿越中間1個小方格,都要花費1個單位時間。商人必須在(2n-1)個單位時間穿越出去。而在經過中間的每個小方格時,都需要繳納一定的費用。
這個商人期望在規定時間內用最少費用穿越出去。請問至少需要多少費用?
注意:不能對角穿越各個小方格(即,只能向上下左右四個方向移動且不能離開網格)。
輸入第一行是乙個整數,表示正方形的寬度n (1 <= n < 100);
後面 n 行,每行 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。
下面分析一波:
首先審題,商人必須在2n-1步之內到達,說明不能上下亂拐,只能夠向右或者向下走,
那麼問題就簡單一點了,我們需要把每一格的最小費用算出來,最後到出口算的也是最小費用,到達
每一格的最小費用為(它當格的費用加上min(左面格仔費用,上面格仔費用),因為左面格仔和上面格仔也是先前算過的最小費用,所以現在還是最小費用,具體**如下。需要用兩個陣列來操作,
乙個用於輸入(a),另乙個用於存最後每個格仔的最少費用(big),big需要初始化乙個大數,因為需要初始化左邊邊界和上邊邊界時,需要找左、上的最小值。(tips:memset最好別亂用,最好只用來賦值大數或者0,否則就會負的好多)。
#includeusing namespace std;
int arr2[102][102];
int main()
} for(int i=1;i<=n;i++)
} for(int i=1;i<=n;i++)else
} }cout<}
最低通行費
描述 乙個商人穿過乙個 n n 的正方形的網格,去參加乙個非常重要的商務活動。他要從網格的左上角進,右下角出。每穿越中間1個小方格,都要花費1個單位時間。商人必須在 2n 1 個單位時間穿越出去。而在經過中間的每個小方格時,都需要繳納一定的費用。這個商人期望在規定時間內用最少費用穿越出去。請問至少需...
7614 最低通行費
總時間限制 1000ms 記憶體限制 65536kb 描述 乙個商人穿過乙個 n n 的正方形的網格,去參加乙個非常重要的商務活動。他要從網格的左上角進,右下角出。每穿越中間1個小方格,都要花費1個單位時間。商人必須在 2n 1 個單位時間穿越出去。而在經過中間的每個小方格時,都需要繳納一定的費用。...
1287 最低通行費
乙個商人穿過乙個n n的正方形的網格,去參加乙個非常重要的商務活動。他要從網格的左上角進,右下角出。每穿越中間1個小方格,都要花費1個單位時間。商人必須在 2n 1 個單位時間穿越出去。而在經過中間的每個小方格時,都需要繳納一定的費用。這個商人期望在規定時間內用最少費用穿越出去。請問至少需要多少費用...