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

热门文章

暂无图片
编程学习 ·

由Spring管理的对象的生命周期

注:完整代码在文章最后 生命周期:某个对象从创建到最终销毁会经历的历程! 通常,需要讨论生命周期时,对应的数据类型的对象都不是由开发人员自行维护的! 被容器维护的对象,都是由容器创建对象,并在适当的时候调用其中的某些方法的!而开发人员需要做的就是“确定满足某条…
暂无图片
编程学习 ·

达梦数据守护集群(dmwatch)启停方式

注: 在$DM_HOME/bin目录下执行相关脚本。 停止集群:关闭确认监视器:./DmMonitorServiceDMMONITOR stop 关闭备库守护进程:./DmWatcherServiceDM2 stop 关闭主库守护进程:./DmWatcherServiceDM1 stop 关闭备库数据库服务:./DmServiceDM2 stop 关闭主库数据库服务:./D…
暂无图片
编程学习 ·

web照片存储网站登录后的主页面

web照片存储网站登录后的主页面 在这里插入代码片<%@page import=“java.util.*”%> <%@page import=“com.fh.util.QueryAssistant.QueryAssistant”%> <%@page import=“org.apache.shiro.SecurityUtils”%> <%@page import=“org.apache.shiro.subject…
暂无图片
编程学习 ·

解决VBE6EXT.OLB不能被加载问题

一般出现这个问题的话,就是配置有问题了,或者是你的VBE6EXT.OLB文件出了问题,看了网上一堆方法,试了很多都不管用,然后综合了一下,总结出了不能用的原因和解决方法:第一种方法: 将自己电脑内的VBA文件转移一下: 路径是由 C:\Program Files (x86)\Common Files\microso…
暂无图片
编程学习 ·

Spring——Bean scope

Spring framework 支持6个范围(scope),其中4个只能在用web-aware时才能使用。当然,你也可以创建自定义范围。singleton : spring默认就是singleton,即在注册该bean的时候,会把这个bean存储到单列bean缓存,以后对该bean的所有的后续请求和引用都会返回缓存中的这一个bean…
暂无图片
编程学习 ·

粗糙的量刑模型-随机森林算法

粗糙的刑事量刑模型-随机森林算法一、效果(一)特征重要性(二)预测精度(三)结果二、大致思路(一)数据爬取(二)数据处理1、解压缩2、去重3、格式转换4、文件移动5、法条分割为匹配的数据集6、选择罪名和法定刑7、选择量刑情节8、加重构成要件的去除9、模糊匹配相应数据…
暂无图片
编程学习 ·

两种判断对象类型的方法

两种判断对象类型的方法: 1.通过instanceof *缺点:不能准确的判断该对象是Dog的实例,如果该对象是类的子类对象也会返回true 2.对象.getClass().getName()获取对象的实例类名 (1)对象.getClass():返回该对象对应的Class对象 (2)对象.getClass().getName():该对象对应的class对…
暂无图片
编程学习 ·

设计模式学习——单例模式

一、单例模式的概念1.1 概念单例模式是指 确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。单例模式的特点是隐藏其所有的构造方法。属于创建型模式。1.2 单例模式的适用场景确保任何情况下都绝对只有一个实例。例如ServletContext、ServletConfig、Applicat…
暂无图片
编程学习 ·

XML DOM摘要四(XMLHttpRequest 对象)

什么是 XMLHttpRequest 对象?XMLHttpRequest 对象提供了在网页加载后与服务器进行通信的方法。XMLHttpRequest 对象是开发者的梦想,因为您能够:在不重新加载页面的情况下更新网页在页面已加载后从服务器请求数据在页面已加载后从服务器接收数据在后台向服务器发送数据 所有现…
暂无图片
编程学习 ·

关于k8s的B2I容器化完整解决方案,使用docker-java将jar包构建镜像并推送至远程镜像仓库,并能在k8s中运行

一站式服务,从入门到入土,嘴对嘴一口口喂您,不要一分钱,全部免费送。 先谢赞,人在美国,刚下飞机,已跟小姨子私奔。 后面会再写一篇k8s调k8sApiService.createDeployments()接口通过已上传的镜像实现自动化部署的教程,这样我们就可以实现使用k8s无限套娃(我部署我自己…
暂无图片
编程学习 ·

硬核!想要了解MyBatis执行器的小伙伴必看!

深入理解MyBatis执行器的设计理念 文章目录深入理解MyBatis执行器的设计理念JDBC中的statement类型关于Statement简单执行器和PreparedStatement预处理执行器MyBatis的执行过程是怎样的?SqlSessionExecutorExecutor的种类 JDBC中的statement类型Statement(简单执行器) 作用:…
暂无图片
编程学习 ·

【Linux】——I/O复用之poll

1、poll的概述 在上一篇文章中,我们详细的介绍了I/O复用技术中的select使用。这篇文章我们来主要介绍一下poll. poll系统调用和select类似,也是在指定事件内轮询一定数量的文件描述符,以测试其中是否有就绪的 本质都是统一监听,如果任意一个文件描述符上有关注的事件发生。…
暂无图片
编程学习 ·

设计模式一——创建型模式(笔记)

简要描述 这些设计模式提供了一种方式:在创建对象的时候隐藏创建逻辑。(不是使用new运算符直接实例化对象) 带来的效果:使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。 包括:工厂模式,抽象工厂模式,单例模式,建造者模式,原型模式。 设计模式的六大原则:…
暂无图片
编程学习 ·

数据库原理及应用教程陈志泊-第三章课后习题

一、选择题1. B 2. A 3. C 4. B 5. C 6. C7. B 8. D 9. A 10. D 11. C 12. D二、填空题1. 结构化查询语言2. 数据查询、数据定义、数据操纵、数据控制3. 外模式、模式、内模式4. 数据库、事务日志5. NULL/NOT NULL 、 UNIQUE 约束、 PRIMARY KEY 约束、 FOREIGN KEY …
暂无图片
编程学习 ·

C++的默认构造函数与构造函数

构造函数:C++用于构建类的新对象时需要调用的函数。 默认构造函数:未提供显式初始值时,用来创建对象的构造函数。 class testClass { public:testClass(); /* 默认构造函数 */testClass(int a, char b); /* 构造函数 */testClass(int a=10,char b…
暂无图片
编程学习 ·

奥运五环的绘制

#奥运五环的绘制 import turtle turtle.width(10) turtle.color(“blue”) turtle.circle(50) turtle.penup() turtle.goto(120,0) turtle.pendown() turtle.color(“black”) turtle.circle(50) turtle.penup() turtle.goto(240,0) turtle.pendown() turtle.color(“red”) tu…
暂无图片
编程学习 ·

wx.DateTime.ParseDate(‘yesterday‘)往前倒退一天

用wxpython写了个小程序,打开程序后要把工作日期往前倒退一天,看wx.DateTime的说明时,发现这个控件有强大的自动分析功能。官方原文如下:The date formatting and parsing functions convert wx.DateTime objects to and from text. The conversions to text are mostly tr…
暂无图片
编程学习 ·

esp8266 system_partition_table_regist fail 蓝灯闪一下就灭

在添加了如下函数后,蓝灯闪一下就灭,并且串口打印system_partition_table_regist fail: void ICACHE_FLASH_ATTR user_pre_init(void) {if(!system_partition_table_regist(at_partition_table, sizeof(at_partition_table)/sizeof(at_partition_table[0]),SPI_FLASH_SIZE_M…
暂无图片
编程学习 ·

排序算法总结

排序算法总结选择排序插入排序希尔排序归并排序自顶向下自底向上快速排序堆排序选择排序 算法流程:首先找到数组中最小的元素 将这个最小的元素与数组首位元素交换位置 在剩下的元素中找到最小的元素,并与数组第二个元素交换位置 如此往复直到整个数组排序算法分析:时间复杂度…