/* 返回顶部 */

Luogu P1004 方格取数

gate

随便做做dp _(:3」∠)_

坐标dp,和传纸条一样的,两条路分别为i,j和k,i+j-k。

注意:为了保证i+j-k>0,k的范围应该是min(n,i+j-1)

因为这个wa了两回,我太菜了

代码如下

 

#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#define MogeKo qwq
using namespace std;

int n,x,y,z;
int a[10][10],f[10][10][10];

int main() {
    scanf("%d",&n);
    while(1) {
        scanf("%d%d%d",&x,&y,&z);
        if(!x&&!y&&!z) break;
        a[x][y] = z;
    }
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= n; j++)
            for(int k = 1; k <= min(i+j-1,n); k++) {
                f[i][j][k] = max(max(f[i-1][j][k-1],f[i-1][j][k]),max(f[i][j-1][k-1],f[i][j-1][k]));
                f[i][j][k] += a[i][j] + a[k][i+j-k];
                if(i==k) f[i][j][k] -= a[i][j];
            }
    printf("%d",f[n][n][n]);
    return 0;
}
View Code

 

posted @ 2019-10-07 14:09  Mogeko  阅读(165)  评论(0编辑  收藏  举报