洛谷P1004 方格取數

2021-10-06 07:23:31 字數 1350 閱讀 8767

一道顯而易見的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 ...