A-数字方阵 (牛客)

题目:

链接:https://www.nowcoder.com/acm/contest/86/A
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
Special Judge, 64bit IO Format: %lld

题目描述

 总是对数字的神秘感感到好奇。这次,他在纸上写下了  个从 的数字,并把这些数字排成了 的方阵。他惊奇地发现,这个方阵中每行、每列和两条主对角线上的数字之和都 不一样。他想要更多的方阵,但他再写不出来了。于是他㕛跑来找你,请你给他一个边长为  的满足上述性质的方阵。

输入描述:

输入共一行,一个整数  ,意义同题面描述。

输出描述:

输出共  行,每行  个整数,表示答案方阵。
输出任意一种可行方案即可。
 
  

示例1

输入

3

输出

1 2 3
8 9 4
7 6 5

备注:

 
  


看到这儿   我以为就是简单的蛇形填数,但是当数据过大时,会超时间,所以另外觅思路。



题解:    




代码:


#include<iostream>
#include<cstring>
#include<cstdio>
int num[1010][1010] ;
using namespace std;
int main()
{
int n,i,j;
memset (num,0,sizeof (num));
cin>>n;
int t=1;
for  (i=1;i<=n-1;i++)
{
for (j=1;j<=n-1;j++)
{
num[i][j]=t++; 
}
}
for (i=n,j=1;j<=n-1;j++)
num[i][j]=t++;
for (i=1,j<=n;i<=n;i++)
num[i][j]=t++;
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
if (j==n)
cout<<num[i][j]<<endl;
else 
cout<<num[i][j]<<" ";
}
}
return 0;

 
 

猜你喜欢

转载自blog.csdn.net/a1204675546/article/details/80069281