讨论 / 三维数组题解
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
回复 删除
oh my god!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
查看更多回复
提交回复