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 10 Python
Python简单操作sqlite3的方法示例
Mar 22 Python
Python中的单继承与多继承实例分析
May 10 Python
python获取url的返回信息方法
Dec 17 Python
python 处理telnet返回的More,以及get想要的那个参数方法
Feb 14 Python
python2.7 安装pip的方法步骤(管用)
May 05 Python
简单了解django orm中介模型
Jul 30 Python
Python操作SQLite数据库过程解析
Sep 02 Python
pytorch实现onehot编码转为普通label标签
Jan 02 Python
用Python生成HTML表格的方法示例
Mar 06 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
Aug 22 Python
Python实现加密的RAR文件解压的方法(密码已知)
Sep 11 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
dedecms 制作模板中使用的全局标记图文教程
2007/03/11 PHP
php读取文件内容的三种可行方法示例介绍
2014/02/08 PHP
ThinkPHP之foreach标签使用概述
2014/06/30 PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
2015/02/12 PHP
PHP开发框架laravel安装与配置教程
2015/03/13 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
2016/07/28 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
2016/11/10 PHP
php+mysql实现简单登录注册修改密码网页
2016/11/30 PHP
yii2中dropDownList实现二级和三级联动写法
2017/04/26 PHP
php实现JWT验证的实例教程
2020/11/26 PHP
Javascript学习笔记2 函数
2010/01/11 Javascript
jquery ajax 简单范例(界面+后台)
2013/11/19 Javascript
node.js中的http.response.end方法使用说明
2014/12/14 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
2015/03/12 Javascript
整理AngularJS中的一些常用指令
2015/06/16 Javascript
Bootstrap框架动态生成Web页面文章内目录的方法
2016/05/12 Javascript
JavaScipt选取文档元素的方法(推荐)
2016/08/05 Javascript
JavaScript三种绑定事件方式及相互之间的区别分析
2017/01/10 Javascript
微信小程序遇到修改数据后页面不渲染的问题解决
2017/03/09 Javascript
Angular.js基础学习之初始化
2017/03/10 Javascript
js前端实现图片懒加载(lazyload)的两种方式
2017/04/24 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
2018/09/19 Javascript
vue中eslintrc.js配置最详细介绍
2018/12/21 Javascript
详解Vue.directive 自定义指令
2019/03/27 Javascript
解决vuecli3中img src 的引入问题
2020/08/04 Javascript
记录Django开发心得
2014/07/16 Python
基于Html5 canvas实现裁剪图片和马赛克功能及又拍云上传图片 功能
2019/07/09 HTML / CSS
创业计划书中要认真思考的问题
2013/12/28 职场文书
乡镇纠风工作实施方案
2014/03/22 职场文书
销售主管竞聘书
2014/03/31 职场文书
政府信息公开实施方案
2014/05/09 职场文书
酒店员工辞职信范文
2015/02/28 职场文书
2015年试用期自我评价范文
2015/03/10 职场文书
2015年个人工作总结报告
2015/04/25 职场文书
推广普通话主题班会
2015/08/17 职场文书
前端canvas中物体边框和控制点的实现示例
2022/08/05 Javascript