1576: 蛇形填数

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:63 解决:33

题目描述


     在n*n方阵里填入1,2,3,…,n*n,要求填成蛇形。例如n=4时方阵为:
    10 11 12  1
     9  16 13  2
     8  15 14  3
     7    6   5  4
    上面的方阵中,多余的空格只是为了便于观察规律,不必严格输出,n<=8。
【分析】:
    类比数学中的矩阵,我们可以用一个所谓的二维数组来储存题目中的方阵。只需声明一个int a[MAXN][MAXN],就可以获得一个大小为MAXN×MAXN的方阵。在声明时,两维的大小不必相同,因此也可以声明int a[30][50]这样的数组,第一维下标范围是0,1,2,…,29,第二维下标范围是0,1,2,…,49。
    让我们从1开始依次填写。设“笔”的坐标为(x,y),则一开始x=0,y=n-1,即第0行,第n-1列(别忘了行列的范围是0到n-1,没有第n列)。“笔”的移动轨迹是:下,下,下,左,左,左,上,上,上,右,右,下,下,左,上。总之,先是下,到不能填了为止,然后是左,接着是上,最后是右。“不能填”是指再走就出界(例如4→5),或者再走就要走到以前填过的格子(例如12→13)。如果我们把所有格子初始为0,就能很方便地加以判断。

输入

输入一个整数n,表示生成一个n*n的矩阵

输出

输出蛇形矩阵。
提示:同一行每两个元素之间使用空格分隔

样例输入 复制

4

样例输出 复制

10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4

来源/分类