ZOJ 3751 Diagonal

ZOJ 的二月月赛

小菜鸟也只能写写水题了。。       

题目的意思就是:求主对角线上的数字最大,数字必须是相连;
可以看做画一条线经过每一个空格,因为要使主对角线上的数字最大所以要尽量把大数放在主对角线上;
比如 n=5的时候
ZOJ 3751 Diagonal_第1张图片 ;这就是最大的时候。最大数字从第四行第四列开始(也可以是第二行第二列,只要空出一行让其他数字通行),而右下角的数字就是左上角的数字的一半。(19/2=9);因为主对角线两边的数字的个数应该都是相同的;
只要想到了就如何最大就很简单了。。
就可以计算出一个公式。也可以不用公式。。
#include
int main()
{
	int n,sum;
	while(scanf("%d",&n)!=EOF)
	{
		printf("%d\n",(n-1)*n*n-(n-1)*(n-2)+(n*n-2*(n-2))/2);
	}
	return 0;
}



你可能感兴趣的:(不知道放哪里,zoj)