雙線dp問題,在網上找了好幾個題解才把思路理清...
/*
d[k][i][j]表示第k步,第一條線在i行,第二條線在j行時收集的寶藏
由於每次僅走一步,所以第一條線座標(i, k-i),第二條線座標(j, k-j)
狀態轉移方程:
d[k][i][j] = max
在第k-1步時,由於是雙線,每條線均有兩種行走方式到達狀態(i, j),
因此共有四種狀態可以由k-1步到k步,在這四種狀態中取最大的
ps:由於本人也是新手,"狀態"一詞可能濫用了
*/#include #include using namespace std;
int dp();
int a[55][55];
int d[110][55][55];
int m;
int n;
int main()}/*
為解決線路交叉問題,第一條線路從(1, 2)開始,即向右
第二條線路從(2, 1)開始,向下
對(m, n)進行特殊處理,因此k: 3 -> m+n-1
如果設1號機械人走的是下邊的路線,2號機械人走的是右邊的路線,
由於路線不相交,所以1號機械人第一步是往下的,而2號機械人是往右的,
而到達終點前1號機械人不會達到第n列,同樣2號機械人不會到達第m
*/int dp()}}
d[m+n][m][m] = d[m+n-1][m-1][m] + a[m][n];
return d[m+n][m][m];
}
NYOJ712 探尋寶藏
時間限制 1000 ms 記憶體限制 65535 kb 難度 5 描述 傳說hmh大沙漠中有乙個m n迷宮,裡面藏有許多寶物。某天,dr.kong找到了迷宮的地圖,他發現迷宮內處處有寶物,最珍貴的寶物就藏在右下角,迷宮的進出口在左上角。當然,迷宮中的通路不是平坦的,到處都是陷阱。dr.kong決定讓...
nyoj 712 探 尋 寶 藏
時間限制 1000 ms 記憶體限制 65535 kb 難度 5 描述 傳說hmh大沙漠中有乙個m n迷宮,裡面藏有許多寶物。某天,dr.kong找到了迷宮的地圖,他發現迷宮內處處有寶物,最珍貴的寶物就藏在右下角,迷宮的進出口在左上角。當然,迷宮中的通路不是平坦的,到處都是陷阱。dr.kong決定讓...
nyoj 712探 尋 寶 藏
時間限制 1000 ms 記憶體限制 65535 kb 難度 5 描述 傳說hmh大沙漠中有乙個m n迷宮,裡面藏有許多寶物。某天,dr.kong找到了迷宮的地圖,他發現迷宮內處處有寶物,最珍貴的寶物就藏在右下角,迷宮的進出口在左上角。當然,迷宮中的通路不是平坦的,到處都是陷阱。dr.kong決定讓...