欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

洛谷P1004方格取数

程序员文章站 2022-07-12 08:53:17
...

这道题和传纸条一样,之前的博文有讲解

代码

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int M=30;
int map[M][M];
int f[M][M][M][M];
int n;
int main()
{
    scanf("%d",&n);int x,y,z;
    while (scanf("%d%d%d",&x,&y,&z)&&x&&y&&y) map[x][y]=z;
    for (int i=1;i<=n;i++)
    for (int j=1;j<=n;j++)
    for (int k=1;k<=n;k++)
    for (int e=1;e<=n;e++)
    {
        f[i][j][k][e]=max(max(f[i-1][j][k-1][e],f[i-1][j][k][e-1]),max(f[i][j-1][k-1][e],f[i][j-1][k][e-1]))+map[i][j]+map[k][e];	
        if (i==k&&e==j) f[i][j][k][e]-=map[i][j];
    }
    cout<<f[n][n][n][n];
    return 0;
}