乙個商人穿過乙個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,所以只能向下或者向右走,想到這步就很好辦了。狀態轉移方程也很好推的……注意邊界(i==1和j==1時)的狀態只能由乙個方向推出
#include #include using namespace std;
int n,f[1000][1000];
int main()
else if(j==1) f[i][j]+=f[i-1][j];
else f[i][j]+=min(f[i-1][j],f[i][j-1]);
} cout
}
動態規劃練習題 19(最低通行費)
乙個商人穿過乙個 n n 的正方形的網格,去參加乙個非常重要的商務活動。他要從網格的左上角進,右下角出。每穿越中間1個小方格,都要花費1個單位時間。商人必須在 2n 1 個單位時間穿越出去。而在經過中間的每個小方格時,都需要繳納一定的費用。這個商人期望在規定時間內用最少費用穿越出去。請問至少需要多少...
動態規劃練習題 6(登山)
隊員們發現山上乙個有n個景點,並且決定按照順序來瀏覽這些景點,即每次所瀏覽景點的編號都要大於前乙個瀏覽景點的編號。同時隊員們還有另乙個登山習慣,就是不連續瀏覽海拔相同的兩個景點,並且一旦開始下山,就不再向上走了。隊員們希望在滿足上面條件的同時,盡可能多的瀏覽景點,你能幫他們找出最多可能瀏覽的景點數麼...
關於動態規劃的練習題
1.給出不同面額的硬幣以及乙個總金額.寫乙個方法來計算給出的總金額可以換取的最少的硬幣數量.如果已有硬幣的任意組合均無法與總金額面額相等,那麼返回 1。public static intdp int arr,int count 如果不能湊成額度,則返回 1 if cost count integer...