n和m搞错了
看我给你调的AC代码
```
#include<bits/stdc++.h>
using namespace std;
int m,n,f[115][55][55],vis[55][55];
int M(int a,int b,int c,int d){
return max(a,max(b,max(c,d)));
}
int main(){
cin>>m>>n;
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
cin>>vis[i][j];
}
}
for(int l=1;l<=m+n-1;l++){
for(int i=1;i<=m;i++){
for(int j=1;j<=m;j++){
if(l-i+1<1 || l-j+1<1 || l-i+1>n || l-j+1>n){
continue;
}
f[l][i][j]=M(f[l-1][i-1][j-1]+vis[i-1][l-i+1]+vis[j-1][l-j+1],f[l-1][i][j-1]+vis[i][l-i]+vis[j-1][l-j+1],f[l-1][i-1][j]+vis[i-1][l-i+1]+vis[j][l-j],f[l-1][i][j]+vis[i][l-i]+vis[j][l-j]);
if(i==j)
f[l][i][j]-=vis[i][l-i+1];
}
}
}
cout<<f[n+m-1][m][m];
return 0;
}
```
by dkh2007 @ 2023-08-11 14:58:42
就是m是x的边界,n是y的边界
by dkh2007 @ 2023-08-11 14:59:27
@[dkh2007](/user/758766) 哦哦懂了!感谢
by Deity_Satan @ 2023-08-11 20:16:12