Python实现螺旋矩阵的填充算法示例
作者:afanty_mo 发布时间:2022-06-30 00:18:47
标签:Python,矩阵,算法
本文实例讲述了Python实现螺旋矩阵的填充算法。分享给大家供大家参考,具体如下:
afanty的分析:
关于矩阵(二维数组)填充问题自己动手推推,分析下两个下表的移动规律就很容易咯。
对于螺旋矩阵,不管它是什么鬼,反正就是依次向右、向下、向右、向上移动。
向右移动:横坐标不变,纵坐标加1
向下移动:纵坐标不变,横坐标加1
向右移动:横坐标不变,纵坐标减1
向上移动:纵坐标不变,横坐标减1
代码实现:
#coding=utf-8
import numpy
'''''
Author: afanty
Date: 2016/6/23
'''
def helixMatrix(n):
'''''实现n维螺旋矩阵的填充
:param n:维数
:return:螺旋矩阵
'''
if not isinstance(n, int) or n <= 0:
raise ValueError('请输入合适的维数')
matrix = numpy.zeros((n, n))
left_top = 0
right_buttom = n - 1
number = 1
while left_top < right_buttom:
# 向右移动,横坐标不变,纵坐标+1,number+1
i = left_top
while i < right_buttom:
matrix[left_top][i] = number
i += 1
number += 1
# while
# 向下移动,纵坐标不变,横坐标+1,number+1
i = left_top
while i < right_buttom:
matrix[i][right_buttom] = number
i += 1
number += 1
#while
# 向左移动,横坐标不变,纵坐标-1,number+1
i = right_buttom
while i > left_top:
matrix[right_buttom][i] = number
i -= 1
number += 1
# while
# 向上移动,纵坐标不变,横坐标-1,number+1
i = right_buttom
while i > left_top:
matrix[i][left_top] = number
i -= 1
number += 1
# while
left_top += 1
right_buttom -= 1
# while
if n % 2 != 0:
matrix[n / 2][n / 2] = n * n
return matrix
# end
print("脚本之家测试结果:")
print helixMatrix(5)
运行结果:
希望本文所述对大家Python程序设计有所帮助。
来源:http://blog.csdn.net/mo_yihua/article/details/51743722


猜你喜欢
- 好不容易有个周末,不能闲着,趁着这个时间安装sql server2016正式版,下载那个安装包都用了一个星期安装包可以从这里下载:http:
- 常见的SQL问题:◆选择重复,消除重复和选择出序列有例表:empemp_no name age001 Tom 17002 Sun 14003
- Mysql查询以某"字符串"开头的查询查询不以某个或者某些字符串为开头的字符串1、使用left()函数select *
- 本文汇总了在Access数据库安全问题中最为常见的问题来做出解答。问:什么是Microsoft Access 工作组,怎样创建工作组信息文件
- 1、python代码实现图片分割成九宫格需要包含的库,没有下载安装的,需要自己安装哦。实现原理很简单,就是用PIL库不断画小区域,切下来存储
- 前言对自己写的冗长代码,想重构但又无思路?小编整理了介绍python代码重构优化的一些方法,助你一臂之力。编写干净的 Pythonic 代码
- 代码如下:'************************************ '截取文字长度函数,支持UT
- 1.先指定通用模板url = 'https://www.qiushibaike.com/text/page/%d/'#通用的
- 简介在php中,类型的继承使用extends关键字,而且最多只能继承一个父类,php不支持多继承。class MyClass {
- 什么是并发安全?在高并发场景下,进程、线程(协程)可能会发生资源竞争,导致数据脏读、脏写、死锁等问题,为了避免此类问题的发生,就有了并发安全
- 第一个测试 “Hello Test!”首先,在我们$GOPATH/src目录下创建hello目录,作为本文涉及到的所有示例代码的根目录。然后
- 酱子们大家好,今天继续分享 Python 小工具今天的小程序,可以一键完成文件整理,一起来看看吧!按照文件格式整理具体来说就是不同的文件后缀
- 实际应用中,会遇到需要把表的某些行转换成列,或者把列转换成行的情况。比如一张表在数据库中是这样的:图1但是,需要的结果可能是这样:图2这个时
- PyQt5滚动条控件QScrollBar简介可以看到,前面介绍的几个窗口控件的共同点是新建一些窗口来装载更多的控件,而QScrollBar提
- 在 JavaScript 中对象和数组是引用类型,指向同一个内存空间,如果 prop 是一个对象或数组,在子组件内部改变它会影响父组件的状态
- FBV:function based view 基于函数的视图.CBV:class based view 基于类的视图.在视图函数创建类,需
- 在 github 的 vue-router 中找到同样的一个问题:3.0.1版本通过router实例无法跳转昨天发现有些路由不能正常跳转,找
- 在开始本文之前,首先要保证你的mysql的密码是对的不然就要想起他的办法了。下面话不多说了,下面来一起看看吧。一、首先进入cmd 切入MyS
- 一、本节说明我们在开发过程中经常需要监听用户的输入,比如:用户的点击事件、拖拽事件、键盘事件等等。这就需要用到我们下面要学习的内容v-on指
- 本文实例讲述了php实现的支持断点续传的文件下载类及其用法,是非常实用的技巧。分享给大家供大家参考。具体方法如下:通常来说,php支持断点续