记录编号 |
27875 |
评测结果 |
REWWWWWWWR |
题目名称 |
[NOIP 2008]传纸条 |
最终得分 |
0 |
用户昵称 |
Yeehok |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
0.051 s |
提交时间 |
2011-10-09 20:47:36 |
内存使用 |
1.15 MiB |
显示代码纯文本
#include<fstream>
using namespace std;
ifstream fin("message.in");
ofstream fout("message.out");
int map[51][51],ans[101][51][51];
int Max(int a,int b)
{
return (a>=b ? a:b);
}
int Min(int a,int b)
{
return (a<=b ? a:b);
}
int main(void)
{
int m,n,i,j,k;
fin>>m>>n;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
fin>>map[i][j];
int total=m+n-2,y1,y2,t;
for(i=1;i<=total;i++)
{
t=Min(total,i);
for(j=1;j<=t;j++)
{
y1=i-j+1;
for(k=j+1;k<=t;k++)
{
y2=i-k+1;
ans[i][j][k]=Max(ans[i][j][k],ans[i-1][j-1][k-1]);
ans[i][j][k]=Max(ans[i][j][k],ans[i-1][j][k-1]);
ans[i][j][k]=Max(ans[i][j][k],ans[i-1][j-1][k]);
ans[i][j][k]=Max(ans[i][j][k],ans[i-1][j][k]);
ans[i][j][k]+=map[j][y1]+map[k][y2];
}
}
}
fout<<ans[m+n-2][m-1][m]<<endl;
return 0;
}