题解 | #蛇形矩阵#

蛇形矩阵

https://www.nowcoder.com/practice/f228a074c5274619b26be544962375e1

参考了大佬的思路,做点详细的说明,方便日后回看

#include <stdio.h>

int main() {

    int n;

    scanf("%d", &n);

    int a[1001][1001] = {0};

    int i = 1, j = 1, k = 0, pos = 1;

    a[i][j] = 1;

    for (k = 2; k <= n * n; k++) {

        if (i == 1 && j < n && pos == 1) { //碰到上边界

            a[i][++j] = k;

            pos = -1;

        } else if (j == 1 && i < n && pos == -1) { //碰到左边界

            a[++i][j] = k;

            pos = 1;

        } else if (j == n && pos == 1 && i < n) { //碰到右边界

            a[++i][j] = k;

            pos = -1;

        } else if (i == n && pos == -1 && j < n) { //碰到下边界

            a[i][++j] = k;

            pos = 1;

        } else if (pos == 1) {    //除去边界情况,中间移动过程

            a[--i][++j] = k;

        } else if (pos == -1) {

            a[++i][--j] = k;

        }

    }

    for (i = 1; i <= n; i++) {

        for (j = 1; j <= n; j++)

            printf("%d ", a[i][j]);

        printf("\n");

    }

    return 0;

}

全部评论
有两个错误:碰左,向下一步后只转右上;碰下,向右一步只转右上
点赞
送花
回复
分享
发布于 04-12 09:50 湖北

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务