题目中说
n,m<=50
但是
#include<bits/stdc++.h>
using namespace std;
const int N=60;//这里
int f[2*N][N][N];
int c[N][N];
int main(){
//freopen("P1006_4.in","r",stdin);
int n,m; scanf("%d%d",&m,&n);
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++) scanf("%d",&c[i][j]);
for(int k=3;k<=n+m-1;k++)
for(int i=1;i<=n&&i<=k-1;i++)
for(int j=1;j<=n&&j<=k-1&&j<i;j++){
int sum=0;
for(int a=0;a<=1;a++)
for(int b=0;b<=1;b++) sum=max(sum,f[k-1][i-a][j-b]);
f[k][i][j]=sum+c[k-i][i]+c[k-j][j];
}
printf("%d\n",f[n+m-1][n][n-1]);
}
此代码RE
#include<bits/stdc++.h>
using namespace std;
const int N=100;//这里
int f[2*N][N][N];
int c[N][N];
int main(){
//freopen("P1006_4.in","r",stdin);
int n,m; scanf("%d%d",&m,&n);
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++) scanf("%d",&c[i][j]);
for(int k=3;k<=n+m-1;k++)
for(int i=1;i<=n&&i<=k-1;i++)
for(int j=1;j<=n&&j<=k-1&&j<i;j++){
int sum=0;
for(int a=0;a<=1;a++)
for(int b=0;b<=1;b++) sum=max(sum,f[k-1][i-a][j-b]);
f[k][i][j]=sum+c[k-i][i]+c[k-j][j];
}
printf("%d\n",f[n+m-1][n][n-1]);
}
此代码AC
数据范围怎么了?请哪位大佬指点一下