比赛 防止浮躁的小练习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(){;}