题目描述
螺旋矩阵的定义是在一个N*N的矩阵中,左上角的点为 1,然后顺时针依次填写 2,3,4等
比如 N为 4 的螺旋矩阵如下:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
现在给你一个螺旋矩阵的大小 N,让你具体输出 N*N 这个螺旋矩阵。
输入格式
给你一个N ,表示这个螺旋矩阵的大小为 NtimesN,(3<=N<=10000
输出格式
输出 N 行 N 列对应的螺旋矩阵。
每行 N个整数,整数间使用空格间隔,每行最后没有空格。
样例
样例输入
3
样例输出
1 2 3
8 9 4
7 6 5
代码如下
#include <cstdio>
#include <cstring>
int a[10005][10005];
int main(){
int n, x=0, y=0, tot=0;
scanf("%d", &n);
memset(a,0,sizeof(a));//把a数组全部置0
x=y=0;
tot = a[0][0] = 1;
while (tot < n * n) //没有必要用for循环
{
while (y + 1 < n && !a[x][y + 1]) //往右走
a[x][++y] = ++tot;
while (x + 1 < n && !a[x + 1][y])//往下走
a[++x][y] =