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中内置的itertools模块
Apr 29 Python
Django中URLconf和include()的协同工作方法
Jul 20 Python
Python 调用Java实例详解
Jun 02 Python
Python学习教程之常用的内置函数大全
Jul 14 Python
Python3中的json模块使用详解
May 05 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
Jun 14 Python
win10系统下Anaconda3安装配置方法图文教程
Sep 19 Python
python中bs4.BeautifulSoup的基本用法
Jul 27 Python
对django2.0 关联表的必填on_delete参数的含义解析
Aug 09 Python
Pandas DataFrame中的tuple元素遍历的实现
Oct 23 Python
Python 读取xml数据,cv2裁剪图片实例
Mar 10 Python
python实现AHP算法的方法实例(层次分析法)
Sep 09 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中替换键名的简易方法示例详解
2014/01/07 PHP
phplot生成图片类用法详解
2015/01/06 PHP
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
2016/03/07 PHP
php实现跨域提交form表单的方法【2种方法】
2016/10/17 PHP
php函数mkdir实现递归创建层级目录
2016/10/27 PHP
PHP常见字符串操作函数与用法总结
2019/03/04 PHP
JavaScript 内置对象属性及方法集合
2010/07/04 Javascript
巧用jquery解决下拉菜单被Div遮挡的相关问题
2014/02/13 Javascript
深入剖析JavaScript中的枚举功能
2014/03/06 Javascript
JavaScript设置body高度为浏览器高度的方法
2015/02/09 Javascript
Bootstrap进度条组件知识详解
2016/05/01 Javascript
JavaScript检测原始值、引用值、属性
2016/06/20 Javascript
BootStrap glyphicon图标无法显示的解决方法
2016/09/06 Javascript
javascript 判断是否是微信浏览器的方法
2016/10/09 Javascript
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
JavaScript简介_动力节点Java学院整理
2017/06/26 Javascript
vue2.0s中eventBus实现兄弟组件通信的示例代码
2017/10/25 Javascript
js中apply与call简单用法详解
2017/11/06 Javascript
小程序实现列表删除功能
2018/10/30 Javascript
JavaScript格式化json和xml的方法示例
2019/01/22 Javascript
JavaScript页面加载事件实例讲解
2019/09/01 Javascript
解决在Vue中使用axios用form表单出现的问题
2019/10/30 Javascript
简单了解JavaScript弹窗实现代码
2020/05/07 Javascript
Python命令行参数解析模块optparse使用实例
2015/04/13 Python
python中常用检测字符串相关函数汇总
2015/04/15 Python
Python 的类、继承和多态详解
2017/07/16 Python
Python爬虫实现验证码登录代码实例
2019/05/10 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
2020/07/09 Python
python搜索算法原理及实例讲解
2020/11/18 Python
css3实现的多级渐变下拉菜单导航效果代码
2015/08/31 HTML / CSS
详解如何用HTML5 Canvas API控制图片的缩放变换
2016/03/22 HTML / CSS
Superdry瑞典官网:英国日本街头风品牌
2017/05/17 全球购物
英国健身仓库:Bodybuilding Warehouse
2019/03/06 全球购物
经典商业广告词
2014/03/13 职场文书
python爬不同图片分别保存在不同文件夹中的实现
2021/04/02 Python
html输入两个数实现加减乘除功能
2021/07/01 HTML / CSS