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学习笔记 下载
Feb 10 Python
python基础教程之简单入门说明(变量和控制语言使用方法)
Mar 25 Python
9种python web 程序的部署方式小结
Jun 30 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
Mar 12 Python
Django模板变量如何传递给外部js调用的方法小结
Jul 24 Python
python中文分词,使用结巴分词对python进行分词(实例讲解)
Nov 14 Python
pandas DataFrame数据转为list的方法
Apr 11 Python
Python3使用turtle绘制超立方体图形示例
Jun 19 Python
在pandas多重索引multiIndex中选定指定索引的行方法
Nov 16 Python
Python爬虫学习之翻译小程序
Jul 30 Python
Django应用程序入口WSGIHandler源码解析
Aug 05 Python
Python谱减法语音降噪实例
Dec 18 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 5.0对象模型深度探索之属性和方法
2008/03/27 PHP
PHP stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
CI框架中libraries,helpers,hooks文件夹详细说明
2014/06/10 PHP
php对文件夹进行相关操作(遍历、计算大小)
2015/11/04 PHP
PHP  Yii清理缓存的实现方法
2016/11/10 PHP
浅谈PHP各环境下的伪静态配置
2019/03/13 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
怎么选择Javascript框架(Javascript Framework)
2013/11/22 Javascript
js中创建对象的几种方式示例介绍
2014/01/26 Javascript
javascript下拉框选项单击事件的例子分享
2015/03/04 Javascript
js限制文本框只能输入整数或者带小数点的数字
2015/04/27 Javascript
10个很棒的jQuery代码片段
2015/09/24 Javascript
谈一谈jQuery核心架构设计
2016/03/28 Javascript
Kindeditor在线文本编辑器如何过滤HTML
2016/04/14 Javascript
jq给页面添加覆盖层遮罩的实例
2017/02/16 Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
2017/09/20 Javascript
Vue项目从webpack3.x升级webpack4不完全指南
2019/04/28 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
[01:20]DOTA2上海特级锦标赛现场采访:谁的ID最受青睐
2016/03/25 DOTA
pyside写ui界面入门示例
2014/01/22 Python
PHP魔术方法__ISSET、__UNSET使用实例
2014/11/25 Python
django通过ajax发起请求返回JSON格式数据的方法
2015/06/04 Python
Python提取Linux内核源代码的目录结构实现方法
2016/06/24 Python
Python聊天室程序(基础版)
2018/04/01 Python
Pandas:DataFrame对象的基础操作方法
2018/06/07 Python
python使用turtle库与random库绘制雪花
2018/06/22 Python
通过python连接Linux命令行代码实例
2020/02/18 Python
python实现发送带附件的邮件代码分享
2020/09/22 Python
python3实现飞机大战
2020/11/29 Python
如何用tempfile库创建python进程中的临时文件
2021/01/28 Python
探索HTML5本地存储功能运用技巧
2016/03/02 HTML / CSS
中国茶叶、茶具一站式网上购物商城:醉品茶城
2018/07/03 全球购物
留学生求职信
2014/06/03 职场文书
诚信考试标语
2014/06/24 职场文书
环保建议书作文300字
2015/09/14 职场文书
MySQL数据库如何给表设置约束详解
2022/03/13 MySQL