如何利用Python实现n*n螺旋矩阵


Posted in Python onJanuary 18, 2022

3*3螺旋矩阵:

1 2 3

8 9 4

7 6  5

实现代码:

def spiral(n):
    matrix = [[0] * n for _ in range(n)]
    # 顺时针方向(右,下,左,上)
    dx = [0, 1, 0, -1]
    dy = [1, 0, -1, 0]
    x = y = 0
    dn = 0  # 方向指针0;向右填充,1:向下填充,2:向上填充,3:向上填充
 
    for i in range(1, n * n + 1):  # 从1开始赋值,一直到n*n
        matrix[x][y] = i
        temp_x = x + dx[dn]
        temp_y = y + dy[dn]
        if 0 <= temp_x < n and 0 <= temp_y < n and matrix[temp_x][temp_y] == 0:
            x = temp_x
            y = temp_y
        else:
            dn = (dn + 1) % 4
            x += dx[dn]
            y += dy[dn]
 
    return matrix
 
 
if __name__ == '__main__':
    n = int(input("输入矩阵n值:"))
    matrix = spiral(n)
    for i in range(n):
        print(matrix[i])

运行结果:

如何利用Python实现n*n螺旋矩阵

附:python 简单实现螺旋矩阵

创建一个大小为m * n的矩阵,
并以螺旋方式遍历它。
在遍历时,我们跟踪变量“ val”以填充下一个值,
我们将“ val”一个接一个地递增,并将其值放入矩阵中。
以下是简单实现:
def spiral_matrix(m,n):
    '''
    :param x: colunm index
    :param y: row index
    '''
    a = [[0 for _ in range(m)] for _ in range(n)]
    val = 1
    x,y = 0,0
    count = m*n
    while val <= count:
        for i in range(x, m):
            a[x][i] = val
            val += 1
        x += 1
        for i in range(y+1, n):
            a[i][m-1] = val
            val += 1
        y += 1
 
        if x < m:
            for i in range(m-2, x-2, -1):
                a[n-1][i] = val
                val += 1
            m -= 1
 
        if y < n:
            for i in range(n-2, y-1, -1):
                a[i][y-1] = val
                val += 1
            n -= 1
    for i in a:
        print(*i)
 
spiral_matrix(6,6)
# 1 2 3 4 5 6
# 20 21 22 23 24 7
# 19 32 33 34 25 8
# 18 31 36 35 26 9
# 17 30 29 28 27 10
# 16 15 14 13 12 11

总结

到此这篇关于如何利用Python实现n*n螺旋矩阵的文章就介绍到这了,更多相关Python实现n*n螺旋矩阵内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现堆栈与队列的方法
Jan 15 Python
在Python中使用HTML模版的教程
Apr 29 Python
在Python中操作字典之clear()方法的使用
May 21 Python
Python实现豆瓣图片下载的方法
May 25 Python
Python实现完整的事务操作示例
Jun 20 Python
Python 通过调用接口获取公交信息的实例
Dec 17 Python
使用Windows批处理和WMI设置Python的环境变量方法
Aug 14 Python
利用Python的sympy包求解一元三次方程示例
Nov 22 Python
python集合删除多种方法详解
Feb 10 Python
python通用读取vcf文件的类(复制粘贴即可用)
Feb 29 Python
python怎么对数字进行过滤
Jul 05 Python
python3实现名片管理系统(控制台版)
Nov 29 Python
聊聊Python String型列表求最值的问题
Jan 18 #Python
Python的三个重要函数详解
Jan 18 #Python
python多线程方法详解
Jan 18 #Python
用Python生成会跳舞的美女
基于Pygame实现简单的贪吃蛇游戏
Dec 06 #Python
Python可变集合和不可变集合的构造方法大全
Dec 06 #Python
Python实现视频中添加音频工具详解
Dec 06 #Python
You might like
php header()函数使用说明
2008/07/10 PHP
Laravel 4 初级教程之Pages、表单验证
2014/10/30 PHP
比较全面的event对像在IE与FF中的区别 推荐
2009/09/21 Javascript
让你的网站可编辑的实现js代码
2009/10/19 Javascript
iframe子父页面调用js函数示例
2013/11/07 Javascript
jQuery中replaceWith()方法用法实例
2014/12/25 Javascript
JS数字抽奖游戏实现方法
2015/05/04 Javascript
JQuery查找DOM节点的方法
2015/06/11 Javascript
jQuery层次选择器用法示例
2016/09/09 Javascript
详解NODEJS的http实现
2018/01/04 NodeJs
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
基于JavaScript实现幸运抽奖页面
2020/07/05 Javascript
微信小程序绘制图片发送朋友圈
2019/07/25 Javascript
vue-cli3配置与跨域处理方法
2019/08/17 Javascript
Node.js API详解之 repl模块用法实例分析
2020/05/25 Javascript
JavaScript中ES6规范中let和const的用法和区别
2020/08/06 Javascript
python获取本机mac地址和ip地址的方法
2015/04/29 Python
详解JavaScript编程中的window与window.screen对象
2015/10/26 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
Python 实现网页自动截图的示例讲解
2018/05/17 Python
Django处理文件上传File Uploads的实例
2018/05/28 Python
python设计tcp数据包协议类的例子
2019/07/23 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
2020/11/29 Python
HTML5进度条特效
2014/12/18 HTML / CSS
德国箱包网上商店:koffer24.de
2016/07/27 全球购物
新西兰杂志订阅:isubscribe
2019/08/26 全球购物
写出二分查找算法的两种实现
2013/05/13 面试题
廉政教育心得体会
2014/01/01 职场文书
2014年关于两会精神的心得体会
2014/03/17 职场文书
护理专业毕业生自荐信
2014/06/15 职场文书
扬尘污染防治方案
2014/06/15 职场文书
生活小常识广播稿
2014/09/16 职场文书
个人事迹材料怎么写
2014/12/30 职场文书
2015年母亲节寄语
2015/03/23 职场文书
MySQL创建管理RANGE分区
2022/04/13 MySQL
关于的python五子棋的算法
2022/05/02 Python