洛谷-P5731 【深基5.习6】蛇形方阵

P5731 【深基5.习6】蛇形方阵

题目描述
给出一个不大于 9 的正整数 nn,输出 n\times nn×n 的蛇形方阵。

从左上角填上 1 开始,顺时针方向依次填入数字,如同样例所示。注意每个数字有都会占用 3 个字符,前面使用空格补齐。

输入格式

输出格式

输入输出样例
输入 #1 复制
4
输出 #1 复制
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7


思路:中间四个while语句分别代表右、下、左、上连续走,条件也很好想,就是没有越界和没有填数就可以填了。

#include
using namespace std;
int a[15][15];
int main()
{
    int n,k = 1,x = 1,y = 0;
    cin >> n;
    while (k <= n * n)
    {
        while(y < n && !a[x][y+1])a[x][++y] = k++; //没有越界和没有填数,右走
        while(x < n && !a[x+1][y])a[++x][y] = k++; //没有越界和没有填数,下走
        while(y > 1 && !a[x][y-1])a[x][--y] = k++;//没有越界和没有填数,左走
        while(x > 1 && !a[x-1][y])a[--x][y] = k++;//没有越界和没有填数,上走
    }
    for (int i = 1;i <= n;i++)
    {
        for (int j = 1;j <= n;j++)printf("%3d",a[i][j]);
        printf("\n");   
    }   
    return 0;
}

你可能感兴趣的:(洛谷)