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实现读取目录所有文件的文件名并保存到txt文件代码
Nov 22 Python
python实现多进程代码示例
Oct 31 Python
python ---lambda匿名函数介绍
Mar 13 Python
在Django admin中编辑ManyToManyField的实现方法
Aug 09 Python
django实现类似触发器的功能
Nov 15 Python
如何使用python实现模拟鼠标点击
Jan 06 Python
Python底层封装实现方法详解
Jan 22 Python
PyCharm取消波浪线、下划线和中划线的实现
Mar 03 Python
Python网络爬虫四大选择器用法原理总结
Jun 01 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
Jun 09 Python
Python 数据分析之逐块读取文本的实现
Dec 14 Python
python实现简单区块链结构
Apr 25 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
PHP 正则判断中文UTF-8或GBK的思路及具体实现
2013/11/26 PHP
支持png透明图片的php生成缩略图类分享
2015/02/08 PHP
HTML-CSS群中单选引发的“事件”
2007/03/05 Javascript
IE7提供XMLHttpRequest对象为兼容
2007/03/08 Javascript
JavaScrip实现PHP print_r的数功能(三种方法)
2013/11/12 Javascript
js阻止冒泡及jquery阻止事件冒泡示例介绍
2013/11/19 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
2014/04/12 Javascript
JavaScript中的replace()方法使用详解
2015/06/06 Javascript
JavaScript实现简单获取当前网页网址的方法
2015/11/09 Javascript
AngularJS控制器controller正确的通信的方法
2016/01/25 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
2016/12/14 Javascript
微信小程序 高德地图SDK详解及简单实例(源码下载)
2017/01/11 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
2017/09/28 Javascript
JS中offset和匀速动画详解
2018/02/06 Javascript
解决iView中时间控件选择的时间总是少一天的问题
2018/03/15 Javascript
vue中v-for通过动态绑定class实现触发效果
2018/12/06 Javascript
Vue使用Canvas绘制图片、矩形、线条、文字,下载图片
2019/04/26 Javascript
vue2.0 获取从http接口中获取数据,组件开发,路由配置方式
2019/11/04 Javascript
Node.js API详解之 util模块用法实例分析
2020/05/09 Javascript
js实现简单抽奖功能
2020/11/24 Javascript
javascript this指向相关问题及改变方法
2020/11/19 Javascript
原生JS实现拖拽效果
2020/12/04 Javascript
js实现简单商品筛选功能
2021/02/02 Javascript
[02:03]DOTA2亚洲邀请赛 HGT战队出场宣传片
2015/02/07 DOTA
用django-allauth实现第三方登录的示例代码
2019/06/24 Python
DataFrame.groupby()所见的各种用法详解
2020/06/14 Python
英国家庭珠宝商:T. H. Baker
2018/02/08 全球购物
护士检查书
2014/01/17 职场文书
境外导游求职信
2014/02/27 职场文书
2014镇副书记群众路线专题民主生活会思想汇报
2014/09/23 职场文书
会议接待欢迎标语
2014/10/08 职场文书
事业单位年度考核评语
2014/12/31 职场文书
2015年电气技术员工作总结
2015/07/24 职场文书
应收账款管理制度
2015/08/06 职场文书
Nginx URL重写rewrite机制原理及使用实例
2021/04/01 Servers
宫崎骏十大动画电影,宫崎骏好看的动画电影排名
2022/03/22 日漫