一道顯而易見的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 - 1])));
看著挺長的,其實並不難理解,乙個人有兩種走路狀態,兩個人就有四種。
注意一點:當i == k && j == m
的時候,代表這個點同時被兩個人經過,所以只要加一次這個點的值就行了
其他的就很簡單處理了
話不多說,幹**:
#define _crt_secure_no_warnings
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
#define ull unsigned long long
#define inf 0x3f3f3f3f
#define lnf = 0x3f3f3f3f3f3f3f3f;
using
namespace std;
const
int maxn =12;
int n, graph[maxn]
[maxn]
, dp[maxn]
[maxn]
[maxn]
[maxn]
;int
main()
for(
int i =
1; i <= n; i++
)for
(int j =
1; j <= n; j++
)for
(int k =
1; k <= n; k++
)for
(int m =
1; m <= n; m++
)printf
("%d"
, dp[n]
[n][n]
[n])
;return0;
}
洛谷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 方格取數
洛谷 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 ...