題目:方格取數
拓展題:傳紙條
題目大意:給定乙個矩陣每乙個位置有乙個權值,從左上角到右下角,要走兩次,所到的點如果有權值就取出並變為0,求所走路線取值和最大值。
解題思路:dp演算法
首先假設兩條路同時出發,如果相遇在同乙個各自就只需要取一次權值。
這裡我們來考慮狀態:k表示當前所在位置步數(下標和,即x+y),i1表示第一條路線所在位置的行,i2表示第二條路線當前所在位置的行,即dp[k][i][j]。
因為判斷是否在同乙個位置的條件就是步數(下標和)相同的請情況下,兩條路線在同一行,那麼必定在同一列。
現在來考慮狀態轉移:每一條路線的每乙個位置都可以會從他的上方或者他的左邊取過來,因為有兩條路所以就會有4個狀態轉移。
上**:
#include
using
namespace std;
const
int n=27;
int w[n]
[n],dp[n]
[n][n]
;//dp[k][i1][i2]表示在k步數下,第一條路線所在行i1,第二條路線所在行i2
intmain()
for(
int k=
2;k<=n+n;k++)}
}}cout<[n][n]
/最終狀態存放在終點第一條路在n行,,第二條路在n行。
return0;
}
方格取數(dp)
時間限制 1 sec 記憶體限制 128 mb 提交 9 解決 4 提交 狀態 討論版 命題人 quanxing 設有n n的方格圖,我們在其中的某些方格中填入正整數,而其它的方格中則放入數字0。如下圖所示 某人從圖中的左上角a出發,可以向下行走,也可以向右行走,直到到達右下角的b點。在走過的路上,...
方格取數 DP
description 設有n n的方格圖 n 10,我們將其中的某些方格中填入正整數,而其他的方格中則放入數字0。如下圖所示 見樣例 某人從圖的左上角的a 點出發,可以向下行走,也可以向右走,直到到達右下角的b點。在走過的路上,他可以取走方格中的數 取走後的方格中將變為數字0 此人從a點到b 點共...
方格取數(dp)
題目鏈結 大意 這題是數字三角形的高階版,數字三角形是從左上到右下路徑的最值,而這題是從左上到右下的任意兩條路徑的和的最值。思路 因為是兩條路徑每一步一定有兩個點 可能重合 所以可以根據閆氏dp分析法將狀態f i1,j1,i2,j2 表示為 兩條路徑分別走到 i1,j1 i2,j2 的所有路徑的和的...