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实现获取序列中最小的几个元素
Sep 25 Python
python多重继承新算法C3介绍
Sep 28 Python
Python浅拷贝与深拷贝用法实例
May 09 Python
Python实现二分查找算法实例
May 26 Python
Python2.x与Python3.x的区别
Jan 14 Python
解决Python pandas df 写入excel 出现的问题
Jul 04 Python
python 处理string到hex脚本的方法
Oct 26 Python
Python中的引用知识点总结
May 20 Python
使用 Django Highcharts 实现数据可视化过程解析
Jul 31 Python
Jupyter notebook如何修改平台字体
May 13 Python
浅谈Python中文件夹和python package包的区别
Jun 01 Python
python 解决mysql where in 对列表(list,,array)问题
Jun 06 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
杏林同学录(六)
2006/10/09 PHP
PHP n个不重复的随机数生成代码
2009/06/23 PHP
php常用Stream函数集介绍
2013/06/24 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
发两个小东西,ASP/PHP 学习工具。 用JavaScript写的
2007/04/12 Javascript
js利用与或运算符优先级实现if else条件判断表达式
2010/04/15 Javascript
js操作时间(年-月-日 时-分-秒 星期几)
2010/06/20 Javascript
JavaScript 事件系统
2010/07/22 Javascript
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
2011/09/20 Javascript
Javascript的时间戳和php的时间戳转换注意事项
2013/04/12 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
2013/08/06 Javascript
js简单的表格添加行和删除行操作示例
2014/03/31 Javascript
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
2014/09/03 Javascript
理解js回收机制通俗易懂版
2016/02/29 Javascript
JavaScript实现url参数转成json形式
2016/09/25 Javascript
BootStrap实现轮播图效果(收藏)
2016/12/30 Javascript
jQuery快速实现商品数量加减的方法
2017/02/06 Javascript
jQuery validata插件实现方法
2017/06/25 jQuery
Javasript设计模式之链式调用详解
2018/04/26 Javascript
Node.js利用console输出日志文件的方法示例
2018/04/27 Javascript
简单的三步vuex入门
2018/05/20 Javascript
使用 vue-i18n 切换中英文效果
2018/05/23 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
2018/06/26 Javascript
小程序点赞收藏功能的实现代码示例
2018/09/07 Javascript
JS实现使用POST方式发送请求
2019/08/30 Javascript
在vue中高德地图引入和轨迹的绘制的实现
2019/10/11 Javascript
vue v-for出来的列表,点击某个li使得当前被点击的li字体变红操作
2020/07/17 Javascript
python实现数据图表
2017/07/29 Python
Python中GIL的使用详解
2018/10/03 Python
python读取.mat文件的数据及实例代码
2019/07/12 Python
利用python对excel中一列的时间数据更改格式操作
2020/07/14 Python
python类共享变量操作
2020/09/03 Python
台湾屈臣氏网路商店:Watsons台湾
2020/12/29 全球购物
幼儿园中班教师寄语
2014/04/03 职场文书
安全标语口号
2014/06/09 职场文书
先进集体事迹材料范文
2014/12/25 职场文书