85分求助
查看原帖
85分求助
393852
Creeper_0513楼主2021/10/8 14:19

85分,错三点都是WA

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
long long n,m,i,j;
long long a[1003][1003],bj[1003][1003];
long long f[1003][1003][3];
int dx[]={-1,1,0},dy[]={0,0,1};
long long dfs(int x,int y,int dir){
    int nx,ny;
    long long mx=-1e18;
    if(x==n&&y==m){
        return a[x][y];
    }
    if(f[x][y][dir]!=f[0][0][0])
    return f[x][y][dir];
    for(int i=0;i<3;i++){
        nx=x+dx[i];
        ny=y+dy[i];
        if(nx>n||nx<1||ny>m||ny<1||bj[nx][ny])continue;
        bj[nx][ny]=1;
        mx=max(dfs(nx,ny,i)+a[x][y],mx);
        bj[nx][ny]=0;
    }
    return f[x][y][dir]=mx;
}
int main(){
    scanf("%lld%lld",&n,&m);
    for(i=1;i<=n;i++){
        for(j=1;j<=m;j++){
            scanf("%lld",&a[i][j]);
        }
    }
    memset(f,-9,sizeof(f));
    printf("%lld",dfs(1,1,0));
    return 0;
}
以及我这到底算是什么算法呢
2021/10/8 14:19
加载中...