我跟标程对过了,提交是20分,自己又改了改,还是20分,不知道什么情况
#include<bits/stdc++.h>
using namespace std;
int m,n,a[55][55],f[55][55][55][55];
int main(){
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
cin>>m>>n;
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=n;k>=1;k--){
for(int l=m;l>=1;l--){
f[i][j][k][l]=a[i][j]+a[k][l]+max(max(f[i][j-1][k-1][l],f[i][j-1][k][l-1]),max(f[i][j-1][k][l-1],f[i-1][j][k-1][l]));
}
}
}
}
cout<<f[n][m-1][n-1][m];
return 0;
}
上面是改过的
#include<bits/stdc++.h>
using namespace std;
int m,n,a[55][55],f[55][55][55][55];
int main(){
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
cin>>m>>n;
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=1;k<=n;k++){
for(int l=j+1;l<=m;l++){
f[i][j][k][l]=a[i][j]+a[k][l]+max(max(f[i][j-1][k-1][l],f[i][j-1][k][l-1]),max(f[i][j-1][k][l-1],f[i-1][j][k-1][l]));
}
}
}
}
cout<<f[n][m-1][n-1][m];
return 0;
}
这个是跟标程对的