http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5174
题意:
给你n*n的空矩阵,让你从1到n*n这些数,按顺序在矩阵从填上。
你可以任意选择起点,然后上下左右走,1 2 3的填。
让你构造出主对角线和最大。
输出和。
POINT:
从(2,2)开始构造,到(3,3)-(4,4)--(n,n) 然后跑到(1,1)。(当然是n*n递减的)
这样构造是最大的。至于具体如何跑,只能自己去实验了。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
#define LL long long
const int N = 1e5+33;
int main()
{
int n;
while(cin>>n){
int val = n*n;
int sum=0;
for(int i=1;i<=n-1;i++)
sum+=val,val-=2;
sum+=val/2+1;
cout<<sum<<endl;
}
return 0;
}