如何利用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 获取新浪微博的最新公共微博实例分享
Jul 03 Python
django通过ajax发起请求返回JSON格式数据的方法
Jun 04 Python
python利用不到一百行代码实现一个小siri
Mar 02 Python
Python机器学习之决策树算法
Dec 22 Python
python中sys.argv函数精简概括
Jul 08 Python
解决python中 f.write写入中文出错的问题
Oct 31 Python
python根据文章标题内容自动生成摘要的实例
Feb 21 Python
python 实现dict转json并保存文件
Dec 05 Python
pytorch实现onehot编码转为普通label标签
Jan 02 Python
python2 对excel表格操作完整示例
Feb 23 Python
python 实现倒计时功能(gui界面)
Nov 11 Python
发工资啦!教你用Python实现邮箱自动群发工资条
May 10 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
PHPlet在Windows下的安装
2006/10/09 PHP
php 字符转义 注意事项
2009/05/27 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
2013/10/25 PHP
php实现XML和数组的相互转化功能示例
2017/02/08 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
PHP中ltrim()函数的用法与实例讲解
2019/03/28 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
2020/03/03 PHP
js 表单验证方法(实用)
2009/04/28 Javascript
js ondocumentready onmouseover onclick onmouseout 样式
2010/07/22 Javascript
XMLHttpRequest处理xml格式的返回数据(示例代码)
2013/11/21 Javascript
jQuery中toggleClass()方法用法实例
2015/01/05 Javascript
JQuery使用$.ajax和checkbox实现下次不在通知功能
2015/04/16 Javascript
JS中Eval解析JSON字符串的一个小问题
2016/02/21 Javascript
基于JavaScript实现验证码功能
2017/04/01 Javascript
jquery+ajax实现省市区三级联动 (封装和不封装两种方式)
2017/05/15 jQuery
bootstrap fileinput实现文件上传功能
2017/08/23 Javascript
JS基于正则表达式实现的密码强度验证功能示例
2017/09/21 Javascript
详解如何用webpack4从零开始构建react开发环境
2019/01/27 Javascript
微信小程序如何实现点击图片放大功能
2020/01/21 Javascript
详解用js代码触发dom事件的实现方案
2020/06/10 Javascript
在vue中动态修改css其中一个属性值操作
2020/12/07 Vue.js
gearman的安装启动及python API使用实例
2014/07/08 Python
两个使用Python脚本操作文件的小示例分享
2015/08/27 Python
Python中格式化format()方法详解
2017/04/01 Python
matplotlib调整子图间距,调整整体空白的方法
2018/08/03 Python
浅谈Python类中的self到底是干啥的
2019/11/11 Python
Python3实现监控新型冠状病毒肺炎疫情的示例代码
2020/02/13 Python
CSS3 仿微信聊天小气泡实例代码
2017/04/05 HTML / CSS
使用jquery实现HTML5响应式导航菜单教程
2014/04/02 HTML / CSS
英国女性运动服品牌:Sweaty Betty
2018/11/08 全球购物
如何减少垃圾回收让内存更加有效使用
2013/10/18 面试题
主要的Ajax框架都有什么
2013/11/14 面试题
酒店应聘自荐信
2013/11/09 职场文书
社区学习雷锋活动总结
2014/04/25 职场文书
靠谱的活动总结
2019/04/16 职场文书
golang 实现Location跳转方式
2021/05/02 Golang