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创建只读属性对象的方法(ReadOnlyObject)
Feb 10 Python
python用于url解码和中文解析的小脚本(python url decoder)
Aug 11 Python
由浅入深讲解python中的yield与generator
Apr 05 Python
Python实现的摇骰子猜大小功能小游戏示例
Dec 18 Python
pyqt5自定义信号实例解析
Jan 31 Python
Flask框架模板渲染操作简单示例
Jul 31 Python
DJango的创建和使用详解(默认数据库sqlite3)
Nov 18 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
Jan 20 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
Feb 24 Python
python函数map()和partial()的知识点总结
May 26 Python
python读取图像矩阵文件并转换为向量实例
Jun 18 Python
keras的backend 设置 tensorflow,theano操作
Jun 30 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中文件上传的安全问题
2006/10/09 PHP
我的论坛源代码(四)
2006/10/09 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
2013/12/02 PHP
PHP反射机制原理与用法详解
2017/02/15 PHP
在laravel中实现ORM模型使用第二个数据库设置
2019/10/24 PHP
javascript针对DOM的应用分析(三)
2012/04/15 Javascript
仿微博字符限制效果实现代码
2012/04/20 Javascript
jquery form表单序列化为对象的示例代码
2014/03/05 Javascript
JavaScript中判断整数的多种方法总结
2014/11/08 Javascript
jQuery中$(function() {});问题详解
2015/08/10 Javascript
JavaScript知识点总结之如何提高性能
2016/01/15 Javascript
javascript如何实现360度全景照片问题汇总
2016/04/04 Javascript
基于RequireJS和JQuery的模块化编程——常见问题全面解析
2016/04/14 Javascript
Bootstrap媒体对象的实现
2016/05/01 Javascript
JS扩展String.prototype.format字符串拼接的功能
2018/03/09 Javascript
React props和state属性的具体使用方法
2018/04/12 Javascript
node基于async/await对mysql进行封装
2019/06/20 Javascript
python抓取网页内容示例分享
2014/02/24 Python
pymssql数据库操作MSSQL2005实例分析
2015/05/25 Python
Python易忽视知识点小结
2015/05/25 Python
Python基于列表模拟堆栈和队列功能示例
2018/01/05 Python
Python设计模式之职责链模式原理与用法实例分析
2019/01/11 Python
Python中list循环遍历删除数据的正确方法
2019/09/02 Python
Pytorch释放显存占用方式
2020/01/13 Python
Python如何通过Flask-Mail发送电子邮件
2020/01/29 Python
python图片合成的示例
2020/11/09 Python
python集合的新增元素方法整理
2020/12/07 Python
澳大利亚家具和家居用品在线商店:Interiors Online
2018/03/05 全球购物
英国门销售网站:Green Tree Doors
2020/01/07 全球购物
J2EE面试题
2016/03/14 面试题
安全生产标语
2014/06/06 职场文书
银行贷款收入证明
2014/10/17 职场文书
拔河比赛新闻稿
2015/07/17 职场文书
中考百日冲刺决心书
2015/09/22 职场文书
分享mysql的current_timestamp小坑及解决
2021/11/27 MySQL
python创建字典及相关管理操作
2022/04/13 Python