qaz139 2015-07-14 02:20:55
点我顶贴
收藏
删除
#include <stdio.h>
int data[60][60],f[200][60][60];
int max(int a,int b,int c,int d)
{
if(a<b) a=b;
if (a<c)
{
a=c;
}
if (a<d)
{
a=d;
}
return a;
}
int main(int argc, char *argv[])
{
int n,m,j,k,l;
scanf("%d %d",&n,&m);
for (j=1;j<=n ;j++ )
{
for (k=1;k<=m ;k++ )
{
scanf("%d",&data[j][k]);
}
}
for (k=1;k<=m+n-2 ;k++ )
{
for (j=1;j<=n;j++ )
{
for (l=1;l<=n;l++ )
{
if((j!=l&&j<=k&&l<=k+2&&j<=k+2&&(k+2-l)<=m&&(k+2-j)<=m)||(j==n&&l==n&&(k+2-j)==m&&(k+2-l)==m))
{
f[k][j][l]=max(f[k-1][j][l],f[k-1][j][l-1],f[k-1][j-1][l],f[k-1][j-1][l-1])+data[l][k+2-l]+data[j][k+2-j];
}
}
}
}
printf("%d\n",f[n+m-2][n][n]);
return 0;
}
#1 zhaozixuan@2017-11-12 04:00:43
34202
回复
删除
oh my god!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!