记录编号 132183 评测结果 AAAAAAAAAA
题目名称 [NOIP 2008]传纸条 最终得分 100
用户昵称 Gravatar乌龙猹 是否通过 通过
代码语言 C++ 运行时间 0.253 s
提交时间 2014-10-25 16:14:55 内存使用 26.11 MiB
显示代码纯文本
#include<cstdio>
using namespace std;
int f[51][51][51][51]={0};
int a[51][51]={0},m,n;
int main()
{
    freopen("message.in","r",stdin);
	freopen("message.out","w",stdout);
        scanf("%d%d",&m,&n);
        for(int i=1;i<=m;i++)
            for(int j=1;j<=n;j++)
				scanf("%d",&a[i][j]);
        for(int i=1;i<=m;i++)
        {
                for(int j=1;j<=n;j++)
                {
                        for(int dx=1;dx<=m;dx++)
                        {
                                for(int lxx=1;lxx<=n;lxx++)
                                {
                                        if(i==dx&&j==lxx)
                                        {
                                                if(f[i][j][dx][lxx]<f[i-1][j][dx-1][lxx])
                                                	f[i][j][dx][lxx]=f[i-1][j][dx-1][lxx];
                                                if(f[i][j][dx][lxx]<f[i-1][j][dx][lxx-1])
                                                	f[i][j][dx][lxx]=f[i-1][j][dx][lxx-1];
                                                if(f[i][j][dx][lxx]<f[i][j-1][dx-1][lxx])
                                                	f[i][j][dx][lxx]=f[i][j-1][dx-1][lxx];
                                                if(f[i][j][dx][lxx]<f[i][j-1][dx][lxx-1])
                                                	f[i][j][dx][lxx]=f[i][j-1][dx][lxx-1];
                                        }
                                        else
                                        {
                                                if(f[i][j][dx][lxx]<f[i-1][j][dx-1][lxx])
                                               		f[i][j][dx][lxx]=f[i-1][j][dx-1][lxx];
                                                if(f[i][j][dx][lxx]<f[i-1][j][dx][lxx-1])
                                                	f[i][j][dx][lxx]=f[i-1][j][dx][lxx-1];
                                                if(f[i][j][dx][lxx]<f[i][j-1][dx-1][lxx])
                                                	f[i][j][dx][lxx]=f[i][j-1][dx-1][lxx];
                                                if(f[i][j][dx][lxx]<f[i][j-1][dx][lxx-1])
                                                	f[i][j][dx][lxx]=f[i][j-1][dx][lxx-1];
                                                f[i][j][dx][lxx]+=a[i][j]+a[dx][lxx];
                                        }
                                }
                        }
                }
        }
        printf("%d",f[m][n][m][n]);
        return 0;
}