螺旋矩阵 2018-09-07

作者: 陈zhih | 来源:发表于2018-09-07 23:48 被阅读2次

今天偶然翻出了初学编程时候写的一个螺旋矩阵算法,看到一个大循环嵌套四个小循环的时候,立时觉得设计不良。经过改进之后,以 i j 变量指示方向,使得循环统一为一个。

如下便是一个螺旋矩阵,一眼就能知道怎么回事了

   1   2   3   4   5
  16  17  18  19   6
  15  24  25  20   7
  14  23  22  21   8
  13  12  11  10   9

下面是C源码

#include "stdio.h"

int main()
{
    int a[100][100] = {0},
        i = 0, j = 1, x = 1, y = 0, k = 0, n = 0, m = 0, end;
    int direction[4][2] = {0, 1, 1, 0, 0, -1, -1, 0};
    printf("Enter a number (<20):");
    scanf("%d", &n);
    end = n * n;
    a[1][n + 1] = a[n + 1][n] = a[n][0] = -1;
    a[x][y] = 0;

    while (1)
    {
        if (end == a[x][y])
            break;
        if (a[x + i][y + j] == 0)
        {
            a[x + i][y + j] = a[x][y] + 1;
            x += i;
            y += j;
        }
        else
        {
            k = (k + 1) % 4;
            i = direction[k][0];
            j = direction[k][1];
        }
    }
    for (i = 1; i <= n; i++)
    {
        for (j = 1; j <= n; j++)
            printf("%4d", a[i][j]);
        printf("\n");
    }
}

相关文章

  • 螺旋矩阵 2018-09-07

    今天偶然翻出了初学编程时候写的一个螺旋矩阵算法,看到一个大循环嵌套四个小循环的时候,立时觉得设计不良。经过改进之后...

  • Python实现螺旋矩阵

    螺旋矩阵 什么是螺旋矩阵? 螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大...

  • 螺旋矩阵

    螺旋矩阵 1.想法: 对于矩阵的螺旋我们可以规约为4个方向 2.代码:

  • 螺旋矩阵

    递归 非递归

  • 螺旋矩阵

    给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。 示例 1...

  • 螺旋矩阵

    题目描述:给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。...

  • 螺旋矩阵

    给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。 示例 1...

  • 螺旋矩阵

    原文地址,我的个人博 1.题目 2.分析 上图展示了一轮完整的顺时针螺旋遍历的过程,整个过程可以分为如图所示的四个...

  • 螺旋矩阵

    写在前面 2019年,年初到蚂蚁金服面试测试工程师的职位,现场有一道笔试题是求螺旋矩阵,当时大概和面试官说了一下思...

  • 螺旋矩阵

    题目信息 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 ...

网友评论

    本文标题:螺旋矩阵 2018-09-07

    本文链接:https://www.haomeiwen.com/subject/ugohgftx.html