美文网首页
算法:蛇形矩阵

算法:蛇形矩阵

作者: 卡布奇诺的秘密_Me | 来源:发表于2019-01-07 18:03 被阅读0次

偶然看到蛇形矩阵的算法题,觉得比较有趣,想了想,解出来了,并且对算法有了一个新的感知,先看看题目吧,后面谈谈对算法的感知。


输出如下:

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

解题思路:

  1. m*n的矩阵,一一填入数字,
  2. 数字填在哪一行哪一列,用x/y来表示,填入之后,计算下一次填入的位置
  3. 填入方向有向右上,有向左下,需要有一个值来标记方向

所以需要有:

/*
  m、y:有m行n列
  x、y:填x行第y个
  right:是否向右上 1:右上 0:左下
*/
let m = n = 4;
let x = y = 1;
let right = 0;
let arr = [];
for (let i = 0; i < m; i++) {
  arr[i] = [];
}

需要思考的:
填入有右上、左下的方向,什么时候改变填入的方向?
边缘位置,x=1、x=m、y=1、y = n 的时候。

所以循环代码如下:

for (let i = 1; i <= m * n; i++) {
  // 填充数据
  arr[x - 1][y - 1] = i;

  if (right) {
    if (x === 1 || y + 1 > n) {
      // 边缘时改变方向
      right = 0;
      if (y + 1 > n) {
        // 最右处则填入下一行
        x++;
      } else {
        // 非最右处则填入下一列
        y++;
      }
    } else {
      x--;
      y++;
    }
  } else {
    if (y === 1 || x + 1 > m) {
      // 边缘时改变方向
      right = 1;
      if (x + 1 > m) {
        // 最底处则填入下一列
        y++;
      } else {
        // 非最底处则填入下一行
        x++;
      }
    } else {
      x++;
      y--;
    }
  }
}

其实弄清楚什么时候转换方向,就很好理解了。

题目解析结束,谈谈自己的感悟吧。


本来还在想,怎么算,要不要找公式,后来自己在本子上写了一下,突然发现,算法的过程就是将自己写的过程总结,人在写这个的时候,会去想,下一个从哪里开始,写到哪一个上面,而为什么要换个方向,只不过这些逻辑,你因为图形界面,直接就填入了,而电脑没有这个概念,只能用代码把逻辑写下了,然后进行计算。

所以归根到底,算法是把人脑子里想法的具体化,用代码来展示你是怎么想的。

相关文章

  • 算法:蛇形矩阵

    偶然看到蛇形矩阵的算法题,觉得比较有趣,想了想,解出来了,并且对算法有了一个新的感知,先看看题目吧,后面谈谈对算法...

  • 【C++】蛇形矩阵算法

    顾名思义,蛇形矩阵:矩阵的一种,常被应用在编程题目与数学数列中。 它由1开始的自然数依次排列成的一个矩阵上三角形、...

  • 蛇形矩阵

    java实现“之“字型矩阵 思路: 分为左上角、右下角、中间三部分,其中左上角和右下角和为N*N + 1,中间一部...

  • 蛇形矩阵

    是道老题了。凭着印象写,代码技巧是:先判断,后移动。

  • <算法>蛇形矩阵求解

    蛇形矩阵 右下,下左,左上,上右,循环往复~ 解题思路: 在单步前进过程中, x与y, 只能有一个发生变化 每次转...

  • 1160 蛇形矩阵

    题目描述 Description 小明玩一个数字游戏,取个n行n列数字矩阵(其中n为不超过100的奇数),数字的填...

  • 蛇形矩阵 输出

    有的时候零零碎碎的东西太多,总归是需要找个地方来记录一下。大神们有个Git、CSDN,我就先在这里水一下吧,就只当...

  • Tip | 蛇形矩阵

    输入一个数字i,需要返回的内容如下: 输入一个数字i,输出结果的矩阵是i行i列的。矩阵从右上角开始,从1开始往下,...

  • codevs 1160 蛇形矩阵

    康复1。 2016/01/08 7:58:25稚嫩的自己的代码: 感觉不是自己写的。怎么这么复杂啊。不过思路值得借...

  • 【Java】小议蛇形矩阵

    描述: 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 输入正整数n(n不大于100)输出,输出一个n行...

网友评论

      本文标题:算法:蛇形矩阵

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