題目鏈結
大意:這題是數字三角形的高階版,數字三角形是從左上到右下路徑的最值,而這題是從左上到右下的任意兩條路徑的和的最值。
思路:因為是兩條路徑每一步一定有兩個點(可能重合),所以可以根據閆氏dp分析法將狀態f(i1,j1,i2,j2)表示為:兩條路徑分別走到(i1,j1),(i2,j2)的所有路徑的和的最大值,因為每條路徑每一步都有兩個可以前進的方向,所以可以將狀態集合劃分成四個部分f(i1-1,j1,i2-1,j2),f(i1-1,j1,i2,j2-1),f(i1,j1-1,i2-1,j2),f(i1,j1-1,i2,j2-1).如果當前點不重合則加上兩個點分別的值,如果重合則只加一次。
根據分析,可以得到這樣乙個性質,k=i1+j1=i2+j2,所以當我們知曉i1,i2的時候可以根據j1=j-i1,j2=k-i2推出j1,j2由此可以將狀態由4維降為3維f(k,i1,i2).
ac**:
#include
#include
using
namespace std;
const
int maxn=20;
int w[maxn]
[maxn]
;int f[maxn+maxn]
[maxn]
[maxn]
;int
main()
}}} cout<[n][n]
}
方格取數(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)
描述 設有n n的方格圖 n 10,我們將其中的某些方格中填入正整數,而其他的方格中則放入數字0。如下圖所示 見樣例 某人從圖的左上角的a 點出發,可以向下行走,也可以向右走,直到到達右下角的b點。在走過的路上,他可以取走方格中的數 取走後的方格中將變為數字0 此人從a點到b 點共走兩次,試找出2條...