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实现保存网页到本地示例
Mar 16 Python
python利用dir函数查看类中所有成员函数示例代码
Sep 08 Python
python多进程中的内存复制(实例讲解)
Jan 05 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
Feb 06 Python
python提取包含关键字的整行数据方法
Dec 11 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
Dec 26 Python
使用Python函数进行模块化的实现
Nov 15 Python
Python新手学习函数默认参数设置
Jun 03 Python
Python计算信息熵实例
Jun 18 Python
python把一个字符串切开的实例方法
Sep 27 Python
解决Pymongo insert时会自动添加_id的问题
Dec 05 Python
Python OpenCV之常用滤波器使用详解
Apr 07 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学习 字符串课件
2008/06/15 PHP
PHP 防恶意刷新实现代码
2010/05/16 PHP
php继承的一个应用
2011/09/06 PHP
php ImageMagick windows下安装教程
2015/01/26 PHP
php mysql获取表字段名称和字段信息的三种方法
2016/11/13 PHP
php PDO异常处理详解
2016/11/20 PHP
form自动提交实例讲解
2017/07/10 PHP
PHP中PDO事务处理操作示例
2018/05/02 PHP
js实现iframe动态调整高度的代码
2008/01/06 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
2013/01/24 Javascript
详解jQuery插件开发中的extend方法
2013/11/19 Javascript
[原创]推荐10款最热门jQuery UI框架
2014/08/19 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
jQuery xml字符串的解析、读取及查找方法
2016/03/01 Javascript
JavaScript仿淘宝页面图片滚动加载及刷新回顶部的方法解析
2016/05/24 Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
2016/08/24 Javascript
前端框架Vue.js中Directive知识详解
2016/09/12 Javascript
zTree树形插件异步加载方法详解
2017/06/14 Javascript
vue input输入框关键字筛选检索列表数据展示
2020/10/26 Javascript
layui prompt 设置允许空白提交的方法
2019/09/24 Javascript
react实现移动端下拉菜单的示例代码
2020/01/16 Javascript
node.JS的crypto加密模块使用方法详解(MD5,AES,Hmac,Diffie-Hellman加密)
2020/02/06 Javascript
从零学Python之入门(二)基本数据类型
2014/05/25 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
2020/02/23 Python
vue.js刷新当前页面的实例讲解
2020/12/29 Python
python 列表推导和生成器表达式的使用
2021/02/01 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
HTML5 本地存储之如果没有数据库究竟会怎样
2013/04/25 HTML / CSS
澳大利亚宠物食品和用品商店:PETstock
2020/01/02 全球购物
酒店实习个人鉴定
2013/12/07 职场文书
英语教学随笔感言
2014/02/20 职场文书
小学体育课教学反思
2016/02/16 职场文书
初中生入团申请书范文(五篇)
2019/10/16 职场文书
Jupyter notebook 输出部分显示不全的解决方案
2021/04/24 Python
详解MySQL主从复制及读写分离
2021/05/07 MySQL
MySQL中一条update语句是如何执行的
2022/03/16 MySQL