P1004 [NOIP2000 提高组] 方格取数

#include<bits/stdc++.h>
using namespace std;
int a[55][55],f[55][55][55][55],n,m,t;
int main(){
    scanf("%d",&n);
    int b,c,d;
    do{
        scanf("%d%d%d",&b,&c,&d);
        a[b][c]=d;
    }while(b||c||d);
    f[1][1][1][1]=1;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            for(int p=1;p<=n;p++){
                for(int q=1;q<=n;q++){
                    t=max(max(f[i][j-1][p-1][q],f[i-1][j][p][q-1]),max(f[i][j-1][p][q-1],f[i-1][j][p-1][q]));
                    if(i==p&&j==q)f[i][j][p][q]=t+a[i][j];
                    else f[i][j][p][q]=t+a[i][j]+a[p][q];
                }
            }
        }
    }
    printf("%d",f[n][n][n][n]);
    return 0;
}

 

上一篇:Cargo config


下一篇:Rust 及其包管理Cargo的安装使用