#include<iostream>//To be continued
#include<cstdio>
#include<cmath>
#include<iomanip>
#include<cstring>
#include<string>
#include<fstream>
#include<algorithm>
#include<cctype>
#include<bits/stdc++.h>
using namespace std;
int n;
int m;
int a[1000][1000];
int f[1000][1000][1];
int main() {
cin>>n>>m;
for(int i=1; i<=n; i++) {
for(int j=1; j<=m; j++) {
cin>>a[i][j];
f[i][j][1]=-10000000;
f[i][j][0]=-10000000;
}
}
f[1][1][0]=a[1][1];
f[1][1][1]=a[1][1];
for(int j=1; j<=m; j++) {
for(int i=1; i<=n; i++) {
if(j!=m) {
f[i][j][0]=max(f[i][j][0],max(f[i][j+1][0],f[i][j+1][1])+a[i][j]);
f[i][j][1]=max(f[i][j][1],max(f[i][j+1][0],f[i][j+1][1])+a[i][j]);
}
if(i!=1) {
f[i][j][0]=max(f[i][j][0],f[i-1][j][0]+a[i][j]);//up
}
for(int i=n; i>=1; i--) {
if(i!=n) {
f[i][j][1]=max(f[i][j][1],f[i+1][j][1]+a[i][j]);//down
}
}
}
}
cout<<max(f[n][m][0],f[n][m][1]);
return 0;
}
求救,帮忙调一下