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之坑爹的字符编码
Sep 28 Python
python简单猜数游戏实例
Jul 09 Python
举例简单讲解Python中的数据存储模块shelve的用法
Mar 03 Python
python和shell监控linux服务器的详细代码
Jun 22 Python
python random从集合中随机选择元素的方法
Jan 23 Python
python面试题Python2.x和Python3.x的区别
May 28 Python
python已协程方式处理任务实现过程
Dec 27 Python
使用python的turtle函数绘制一个滑稽表情
Feb 28 Python
opencv 实现特定颜色线条提取与定位操作
Jun 02 Python
Python爬虫实战之爬取携程评论
Jun 02 Python
Python实现批量自动整理文件
Mar 16 Python
详解Python中*args和**kwargs的使用
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
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
实例讲解PHP设计模式编程中的简单工厂模式
2016/02/29 PHP
简单的自定义php模板引擎
2016/08/26 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
PHP实现微信申请退款功能
2018/10/01 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
JavaScript中定义对象原型的两种使用方法
2016/12/15 Javascript
JS实现改变HTML上文字颜色和内容的方法
2016/12/30 Javascript
详解浏览器渲染页面过程
2017/02/09 Javascript
vuejs使用FormData实现ajax上传图片文件
2017/08/08 Javascript
Vue.js的动态组件模板的实现
2018/11/26 Javascript
简单实现vue中的依赖收集与响应的方法
2019/02/18 Javascript
Vue 根据条件判断van-tab的显示方式
2020/08/03 Javascript
[01:52]DOTA2完美大师赛Vega战队趣味视频——kpii老师小课堂
2017/11/25 DOTA
[01:18]PWL开团时刻DAY10——一拳超人
2020/11/11 DOTA
python实现监控windows服务并自动启动服务示例
2014/04/17 Python
Python设计模式之简单工厂模式实例详解
2019/01/22 Python
对python numpy.array插入一行或一列的方法详解
2019/01/29 Python
python Tcp协议发送和接收信息的例子
2019/07/22 Python
python twilio模块实现发送手机短信功能
2019/08/02 Python
python调用百度API实现人脸识别
2020/11/17 Python
python 实现的IP 存活扫描脚本
2020/12/10 Python
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点
2013/01/09 HTML / CSS
HTML5 Canvas锯齿图代码实例
2014/04/10 HTML / CSS
美国最大的存储市场:SpareFoot
2018/07/23 全球购物
碧欧泉法国官网:Biotherm法国
2019/10/23 全球购物
工作自我评价分享
2013/12/01 职场文书
网络信息管理员岗位职责
2014/01/05 职场文书
《孔子拜师》教学反思
2014/02/24 职场文书
捐款倡议书
2014/04/14 职场文书
中药学专业毕业生推荐信
2014/07/10 职场文书
师德先进个人材料
2014/12/20 职场文书
php引用传递
2021/04/01 PHP
能让Python提速超40倍的神器Cython详解
2021/06/24 Python
Redis Stream类型的使用详解
2021/11/11 Redis