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;
}
以及我这到底算是什么算法呢