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模块学习 datetime介绍
Aug 27 Python
python处理中文编码和判断编码示例
Feb 26 Python
Python字符串和字典相关操作的实例详解
Sep 23 Python
Python数据结构之栈、队列的实现代码分享
Dec 04 Python
高效使用Python字典的清单
Apr 04 Python
Python视频爬虫实现下载头条视频功能示例
May 07 Python
python实现简易动态时钟
Nov 19 Python
使用python进行拆分大文件的方法
Dec 10 Python
Python实现求两个数组交集的方法示例
Feb 23 Python
对Python 中矩阵或者数组相减的法则详解
Aug 26 Python
tensorflow+k-means聚类简单实现猫狗图像分类的方法
Apr 28 Python
浅谈Python numpy创建空数组的问题
May 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
实用函数2
2007/11/08 PHP
php Sql Server连接失败问题及解决办法
2009/08/07 PHP
Blitz templates 最快的PHP模板引擎
2010/04/06 PHP
php中神奇的fastcgi_finish_request
2011/05/02 PHP
smarty模板局部缓存方法使用示例
2014/06/17 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
php结合md5实现的加密解密方法
2016/01/25 PHP
JScript内置对象Array中元素的删除方法
2007/03/08 Javascript
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
常用js字符串判断方法整理
2013/10/18 Javascript
为jquery的ajaxfileupload增加附加参数的方法
2014/03/04 Javascript
javascript页面渲染速度测试脚本分享
2014/04/15 Javascript
深入探讨JavaScript String对象
2015/03/09 Javascript
Jquery实时监听input value的实例
2017/01/26 Javascript
JS实现复选框的全选和批量删除功能
2017/04/05 Javascript
vue中各组件之间传递数据的方法示例
2017/07/27 Javascript
JS实现按钮添加背景音乐示例代码
2017/10/17 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
2017/11/09 jQuery
vue2手机APP项目添加开屏广告或者闪屏广告
2017/11/28 Javascript
微信小程序block的使用教程
2018/04/01 Javascript
在vue中使用Autoprefixed的方法
2018/07/27 Javascript
用jQuery实现抽奖程序
2020/04/12 jQuery
微信小程序实现多张图片上传功能
2020/11/18 Javascript
tornado捕获和处理404错误的方法
2014/02/26 Python
Python如何抓取天猫商品详细信息及交易记录
2018/02/23 Python
浅谈利用numpy对矩阵进行归一化处理的方法
2018/07/11 Python
python 基于TCP协议的套接字编程详解
2019/06/29 Python
Django用户认证系统 组与权限解析
2019/08/02 Python
python集合删除多种方法详解
2020/02/10 Python
Django多数据库联用实现方法解析
2020/11/12 Python
Canvas 文本转粒子效果的实现代码
2019/02/14 HTML / CSS
全球性的在线时尚男装零售商:boohooMAN
2016/12/17 全球购物
Sandro法国官网:法国成衣品牌
2019/08/28 全球购物
生日宴会答谢词
2014/01/09 职场文书
2014年心理健康教育工作总结
2014/12/06 职场文书
吧主申请感言怎么写
2015/08/03 职场文书