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常见的格式化输出小结
Dec 15 Python
Python实现一个Git日志统计分析的小工具
Dec 14 Python
在scrapy中使用phantomJS实现异步爬取的方法
Dec 17 Python
Python基于Tkinter模块实现的弹球小游戏
Dec 27 Python
Python 实现数据结构-堆栈和队列的操作方法
Jul 17 Python
Python3使用PySynth制作音乐的方法
Sep 09 Python
Python使用Socket实现简单聊天程序
Feb 28 Python
python 负数取模运算实例
Jun 03 Python
如何使用Python处理HDF格式数据及可视化问题
Jun 24 Python
Python 解析简单的XML数据
Jul 24 Python
python实现文件分片上传的接口自动化
Nov 19 Python
python3.9.1环境安装的方法(图文)
Feb 02 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中的file_get_contents获取远程页面乱码的问题
2013/06/25 PHP
PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
2014/05/04 PHP
基于laravel belongsTo使用详解
2019/10/18 PHP
javascript实现划词标记+划词搜索功能
2007/03/06 Javascript
javascript权威指南 学习笔记之javascript数据类型
2011/09/24 Javascript
Javascript的数组与字典用法与遍历对象的属性技巧
2012/11/07 Javascript
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
css+js实现部分区域高亮可编辑遮罩层
2014/03/04 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
2014/04/29 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
2014/06/15 Javascript
浅谈jQuery异步对象(XMLHttpRequest)
2014/11/17 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
2015/03/18 Javascript
jQuery实现ctrl+enter(回车)提交表单
2015/10/19 Javascript
Javascript removeChild()删除节点及删除子节点的方法
2015/12/27 Javascript
checkbox批量选中,获取选中项的值的简单实例
2016/06/28 Javascript
AngularJS学习第二篇 AngularJS依赖注入
2017/02/13 Javascript
基于JavaScript实现类名的添加与移除
2017/04/23 Javascript
js使用xml数据载体实现城市省份二级联动效果
2017/11/08 Javascript
ES6基础之解构赋值(destructuring assignment)
2019/02/21 Javascript
小程序自动化测试的示例代码
2020/08/11 Javascript
详解javascript脚本何时会被执行
2021/02/05 Javascript
推荐11个实用Python库
2015/01/23 Python
在Python程序中实现分布式进程的教程
2015/04/28 Python
在Python的Django框架中使用通用视图的方法
2015/07/21 Python
解决python 读取 log日志的编码问题
2019/12/24 Python
Python使用OpenPyXL处理Excel表格
2020/07/02 Python
日本土著品牌,综合型购物网站:Cecile
2016/08/23 全球购物
吉尔德利巧克力公司:Ghirardelli Chocolate Company
2019/03/27 全球购物
澳大利亚厨房和家用电器购物网站:Bing Lee
2021/01/11 全球购物
怎样拟定创业计划书
2014/05/01 职场文书
科技节口号
2014/06/19 职场文书
退休党员个人对照检查材料思想汇报
2014/09/29 职场文书
2014年管理人员工作总结
2014/12/01 职场文书
运动会200米广播稿
2015/08/19 职场文书
详解CSS伪元素的妙用单标签之美
2021/05/25 HTML / CSS