P1004 方格取數

2021-08-09 17:14:16 字數 904 閱讀 5892

這題有兩種做法。

第一種是同時考慮兩個點,也就是用4個迴圈。列舉每個點的位置,並計算總分。

f[i][j][k][l]=max(f[i][j][k][l],f[i-1][j][k-1][l],f[i][j-1][k][l-1],f[i-1][j][k][l-1],f[i][j-1][k-1][l])+a[i][j]+a[k][l];

當(i==k&&j==l)時,多算了一次a[i][j],因此扣去。

#include

#include

#include

using

namespace

std;

int a_max(int a,int b,int c,int d,int e)

intmap[11][11];

int n;

int f[11][11][11][11];

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 l=1;l<=n;l++)

printf("%d",f[n][n][n][n]);

}

第二種就是考慮到兩個點都是從原點出發的,因此滿足關係式i+j=k+l(步數相同)。當我們知道乙個點的座標時,我們只需列舉另乙個點的座標,就可以求出另乙個點的座標了。注意判斷一下另乙個點的座標是否滿足條件。

f[i][j][k]=max(f[i-1][j][k-1],f[i][j-1][k-1],f[i-1][j][k],f[i][j-1][k]))+a[i][j]+a[k][l];(同乙個點還要刪掉重複的)

P1004 方格取數

題目描述 設有n n的方格圖 n 9 我們將其中的某些方格中填入正整數,而其他的方格中則放入數字0。如下圖所示 見樣例 a0 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 0 0 0 0 15...

P1004 方格取數

題目描述 設有n n的方格圖 n 9 我們將其中的某些方格中填入正整數,而其他的方格中則放入數字00。如下圖所示 見樣例 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 0 0 0 0 15...

P1004 方格取數

洛谷團隊希望加入 題目描述 設有 n times nn n 的方格圖 n le 9 n 9 我們將其中的某些方格中填入正整數,而其他的方格中則放入數字 00。如下圖所示 見樣例 a0 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 ...