Python实现螺旋矩阵的填充算法示例


Posted in Python onDecember 28, 2017

本文实例讲述了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实现螺旋矩阵的填充算法示例

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python urlopen 使用小示例
Sep 06 Python
Python利用turtle库绘制彩虹代码示例
Dec 20 Python
把csv文件转化为数组及数组的切片方法
Jul 04 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
Dec 24 Python
Tensorflow实现在训练好的模型上进行测试
Jan 20 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
Apr 01 Python
Python3创建Django项目的几种方法(3种)
Jun 03 Python
Python3爬虫中Splash的知识总结
Jul 10 Python
Pyqt助手安装PyQt5帮助文档过程图解
Nov 20 Python
Python 内置函数速查表一览
Jun 02 Python
Python中的xlrd模块使用整理
Jun 15 Python
Python Matplotlib库实现画局部图
Nov 17 Python
wxPython的安装图文教程(Windows)
Dec 28 #Python
Python制作豆瓣图片的爬虫
Dec 28 #Python
浅谈Python使用Bottle来提供一个简单的web服务
Dec 27 #Python
python编程实现12306的一个小爬虫实例
Dec 27 #Python
python导出chrome书签到markdown文件的实例代码
Dec 27 #Python
Python类的继承和多态代码详解
Dec 27 #Python
快速查询Python文档方法分享
Dec 27 #Python
You might like
在PHP3中实现SESSION的功能(二)
2006/10/09 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
2016/02/15 PHP
Yii安装与使用Excel扩展的方法
2016/07/13 PHP
PHP实现的数据对象映射模式详解
2019/03/20 PHP
JavaScript 版本自动生成文章摘要
2008/07/23 Javascript
Javascript中的变量使用说明
2010/05/18 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
js使用for循环与innerHTML获取选中tr下td值
2014/09/26 Javascript
详解JavaScript的表达式与运算符
2015/11/30 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
2016/06/01 Javascript
jQuery实现拖拽可编辑模块功能代码
2017/01/12 Javascript
PHP实现本地图片上传和验证功能
2017/02/27 Javascript
js oncontextmenu事件使用详解
2017/03/25 Javascript
ES6中新增的Object.assign()方法详解
2017/09/22 Javascript
解决layui中的form表单与button的点击事件冲突问题
2018/08/15 Javascript
VSCode Vue开发推荐插件和VSCode快捷键(小结)
2020/08/08 Javascript
vue3.0实现点击切换验证码(组件)及校验
2020/11/18 Vue.js
python 全局变量的import机制介绍
2017/09/07 Python
python 字符串只保留汉字的方法
2018/11/16 Python
Python math库 ln(x)运算的实现及原理
2019/07/17 Python
pandas按行按列遍历Dataframe的几种方式
2019/10/23 Python
浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
2020/05/25 Python
Django Session和Cookie分别实现记住用户登录状态操作
2020/07/02 Python
Python Matplotlib简易教程(小白教程)
2020/07/28 Python
html5播放视频且动态截图实现步骤与代码(支持safari其他未测试)
2013/01/06 HTML / CSS
加拿大国民体育购物网站:National Sports
2018/11/04 全球购物
廉洁自律承诺书
2014/03/27 职场文书
保险内勤岗位职责
2014/04/05 职场文书
金融管理专业求职信
2014/07/10 职场文书
高中校园广播稿3篇
2014/09/29 职场文书
大学生党员个人总结
2015/02/13 职场文书
2015年前台接待工作总结
2015/05/04 职场文书
2015年世界急救日宣传活动方案
2015/05/06 职场文书
平凡的世界读书笔记
2015/06/25 职场文书
大学文艺委员竞选稿
2015/11/19 职场文书
为什么MySQL8新特性会修改自增主键属性
2022/04/18 MySQL