我的代码#2~#4AC,其余全部WA,只得30.
#include<iostream>
#define MAX 1005
using namespace std;
int a[MAX][MAX],b[MAX][MAX],c[MAX][MAX],f[MAX][MAX];
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>a[i][j];
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)for(int k=i-1;k<=i+1;k++)b[i][j]+=a[k][j+1];
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)for(int k=j-1;k<=j+1;k++)c[i][j]+=a[i+1][k];
f[1][1]=0;
for(int i=1;i<=2;i++)for(int j=1;j<=2;j++)f[1][1]+=a[i][j];
for(int i=2;i<=m;i++)f[1][i]=f[1][i-1]+b[1][i];
for(int i=2;i<=n;i++)f[i][1]=f[i-1][1]+c[i][1];
for(int i=2;i<=n;i++)for(int j=2;j<=m;j++){
int sos=b[i][j]+f[i][j-1];
int tot=c[i][j]+f[i-1][j];
f[i][j]=min(sos,tot);
}
cout<<f[n][m];
return 0;
}