比赛 |
防止浮躁的小练习v0.5 |
评测结果 |
AAAAAAAAAA |
题目名称 |
传纸条 |
最终得分 |
100 |
用户昵称 |
cy |
运行时间 |
0.147 s |
代码语言 |
C++ |
内存使用 |
10.44 MiB |
提交时间 |
2016-10-15 17:32:32 |
显示代码纯文本
#include<stdio.h>
#define max(a,b) ((a)>(b)?(a):(b))
//int max(int a,int b){return a>b?a:b;}
int a[51][51]={0},sum[51][51][51][51]={0},n,m;
inline void read(int &x)
{
int flag=1;
char ch;
while(ch=getchar(),ch<'0'||ch>'9') if(ch=='-') flag=-1;
x=(ch^'0');
while(ch=getchar(),ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+(ch^'0');
x*=flag;
}
//===============================================================
int cy()
{
freopen("message.in","r",stdin);
freopen("message.out","w",stdout);
read(n);read(m);
int x,y,z;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
read(a[i][j]);
for(int x1=1;x1<=n;x1++)
for(int y1=1;y1<=m;y1++)
for(int x2=1;x2<=n;x2++)
for(int y2=1;y2<=m;y2++)
{
int r1=max(sum[x1-1][y1][x2-1][y2],sum[x1][y1-1][x2][y2-1]);
int r2=max(sum[x1-1][y1][x2][y2-1],sum[x1][y1-1][x2-1][y2]);
sum[x1][y1][x2][y2]=max(r1,r2)+a[x1][y1];
if (x1!=x2&&y1!=y2) sum[x1][y1][x2][y2]+=a[x2][y2];
}
printf("%d\n",sum[n][m][n][m]);
}
int x=cy();
int main(){;}