美文网首页python专题
Python实现螺旋矩阵

Python实现螺旋矩阵

作者: 扯扯_2c79 | 来源:发表于2018-03-10 15:49 被阅读0次

螺旋矩阵

什么是螺旋矩阵?

螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环。

实现思路

根据规律可以看出,每一层都是按照右->下->左->上的顺序进行递增,由此可见可以用列表和递归的方式每一层每一层的实现,直到中间完全剩下一个(奇数行),或者递归实现填满(偶数行)。

在Python中的实现:

def main():
    lines = int(input('请输入螺旋矩阵的行数:'))
    total_matrix = [[0] * lines for i in range(lines)]
    show_num = 1
    col = lines - 1
    row = lines - 1
    start_line = 0

    def print_ju(start_line, col, row, show_num, ):
        if row == 0:
            if lines % 2 != 0:
                total_matrix[lines // 2][lines // 2] = lines * lines
        else:
            for i in range(start_line, col):  # 打印上横行
                total_matrix[start_line][i] = show_num
                show_num += 1
            for i in range(start_line, row, 1):  # 打印右竖行
                total_matrix[i][col] = show_num
                show_num += 1
            for i in range(row, row - col + start_line, -1):  # 打印下横行
                total_matrix[row][i] = show_num
                show_num += 1
            for i in range(col, col - row + start_line, -1):  # 打印左边竖行
                total_matrix[i][row - col + start_line] = show_num
                show_num += 1
            return print_ju(start_line + 1, row - 1, col - 1, show_num)

    print_ju(start_line, row, col, show_num)
    for i in total_matrix:
        for x in i:
            print(format(x, '3'), end=' ')
        print()


if __name__ == '__main__':
    main()

请输入螺旋矩阵的行数:10
  1   2   3   4   5   6   7   8   9  10 
 36  37  38  39  40  41  42  43  44  11 
 35  64  65  66  67  68  69  70  45  12 
 34  63  84  85  86  87  88  71  46  13 
 33  62  83  96  97  98  89  72  47  14 
 32  61  82  95 100  99  90  73  48  15 
 31  60  81  94  93  92  91  74  49  16 
 30  59  80  79  78  77  76  75  50  17 
 29  58  57  56  55  54  53  52  51  18 
 28  27  26  25  24  23  22  21  20  19 

相关文章

  • Python实现螺旋矩阵

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

  • (python实现)螺旋矩阵

    问题描述 给定一个大小的矩阵行,列),按螺旋的顺序返回矩阵中的所有元素。数据范围:,矩阵中任意元素都满足 示例1 ...

  • 54. Spiral Matrix

    题目分析 螺旋打印矩阵。暴力实现~ 代码

  • JS实现螺旋矩阵

      螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环,接...

  • Java 实现输出螺旋矩阵

    题目 好记性不如烂笔头,记下来 用java实现输入一个50以内的数字num,让这个num的平方数字以螺旋矩阵的方式...

  • 51. 螺旋矩阵(Python)

    更多精彩内容,请关注【力扣中等题】。 题目 难度:★★★☆☆类型:矩阵,二维数组方法:寻找规律 给定一个包含 m ...

  • 885. 螺旋矩阵(Python)

    难度:★★★★☆类型:数组方法:数学 力扣链接请移步本题传送门[https://leetcode-cn.com/p...

  • 螺旋矩阵

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

  • python实现leetcode之59. 螺旋矩阵 II

    解题思路 在矩阵四周添加一圈障碍物后续在碰到障碍物的时候调整方向总共处理N * N个元素后停止 59. 螺旋矩阵 ...

  • 螺旋矩阵

    递归 非递归

网友评论

    本文标题:Python实现螺旋矩阵

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