洛谷 P1004 方格取數(DP)

2022-04-06 17:37:57 字數 759 閱讀 5608

考慮讓兩個人同時走,設計狀態則直接設f[i][j][k][m],表示第乙個人走到(i,j),第二個人走到(k,m)時所取數的最大值。

當(i,j)==(k,m)時,即兩個人走到同乙個點,則這個點其實在第二遍的時候已經為0,所以這個點的貢獻只是一次。

則有轉移方程:

f[i][j][k][m]=max(f[i-1][j][k-1][m],max(f[i-1][j][k][m-1],max(f[i][j-1][k-1][m],f[i][j-1][k][m-1

])));

if(i==k&&j==m) f[i][j][k][m]+=g[i][j];

else f[i][j][k][m]+=g[i][j]+g[k][m];

並且最後一維m不需要列舉,用i+j-k計算出來即可。(應該只能這樣做)

ac**:

1 #include2 #include3 #include4

using

namespace

std;

5const

int n=10;6

intn,res;

7int

a,b,c;

8int

g[n][n],s[n],f[n][n][n][n];

9int

main()

21 printf("%d"

,f[n][n][n][n]);

22return0;

23 }

ac**

洛谷P1004方格取數( )

題目描述 設有n times nn n的方格圖 n le 9 n 9 我們將其中的某些方格中填入正整數,而其他的方格中則放入數字00。如下圖所示 見樣例 a 0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 0 0 0 0 0 7 0 0 0 0 0 0 14 0 0 0 0 0 21 ...

洛谷 P1004 方格取數

洛谷 p1004 方格取數 設有n n的方格圖 n 9 我們將其中的某些方格中填入正整數,而其他的方格中則放 人數字0。如下圖所示 見樣例 a 0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 0 0 0 0 0 7 0 0 0 0 0 0 14 0 0 0 0 0 21 0 0 0 4...

洛谷P1004 方格取數

一道顯而易見的dp題,因為要走兩次,相當於兩個人一起從起點出發,所以可採取四維陣列儲存,前兩維記錄第乙個人,後兩維記錄第二個人。轉移方程 dp i j k m max dp i 1 j k 1 m max dp i 1 j k m 1 max dp i j 1 k 1 m dp i j 1 k m ...