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将xml xsl文件生成html文件存储示例讲解
Dec 03 Python
浅析Python的web.py框架中url的设定方法
Jul 11 Python
浅谈python socket函数中,send与sendall的区别与使用方法
May 09 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
Jun 04 Python
python如何爬取个性签名
Jun 19 Python
浅谈Python爬虫基本套路
Mar 25 Python
详解python中的线程与线程池
May 10 Python
在pycharm中配置Anaconda以及pip源配置详解
Sep 09 Python
Python3自定义json逐层解析器代码
May 11 Python
python实现图片批量压缩
Apr 24 Python
pytorch 实现多个Dataloader同时训练
May 29 Python
Python实现学生管理系统(面向对象版)
Jun 24 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
DC动画很好看?新作烂得令人发指,名叫《红色之子》
2020/04/09 欧美动漫
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
详谈php静态方法及普通方法的区别
2016/10/04 PHP
php面向对象程序设计入门教程
2019/06/22 PHP
PHP 扩展Memcached命令用法实例总结
2020/06/04 PHP
完美解决JS中汉字显示乱码问题(已解决)
2006/12/27 Javascript
firefox下frameset取不到值的解决方法
2010/09/06 Javascript
jQuery '行 4954 错误: 不支持该属性或方法' 的问题解决方法
2011/01/19 Javascript
jquery常用技巧及常用方法列表集合
2011/04/06 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
javascript获取flash版本号的方法
2014/11/20 Javascript
jQuery插件Elastislide实现响应式的焦点图无缝滚动切换特效
2015/04/12 Javascript
JavaScript-html标题滚动效果的简单实现
2016/09/08 Javascript
如何写好你的JavaScript【推荐】
2017/03/02 Javascript
JS实现的添加弹出层并完成锁屏操作示例
2017/04/07 Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
2017/07/08 jQuery
vue实现导航栏效果(选中状态刷新不消失)
2017/12/13 Javascript
jQuery仿移动端支付宝键盘的实现代码
2018/08/15 jQuery
在pycharm中开发vue的方法步骤
2020/03/04 Javascript
vue插槽slot的简单理解与用法实例分析
2020/03/14 Javascript
python抓取网页时字符集转换问题处理方案分享
2014/06/19 Python
python实现批量改文件名称的方法
2015/05/25 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
2019/06/03 Python
基于Django框架的权限组件rbac实例讲解
2019/08/31 Python
python实现图片插入文字
2019/11/26 Python
Python通过zookeeper实现分布式服务代码解析
2020/07/22 Python
英国在线定做百叶窗网站:Make My Blinds
2020/08/17 全球购物
学校采购员岗位职责
2014/01/02 职场文书
《画杨桃》教学反思
2014/04/13 职场文书
幼儿园中班上学期评语
2014/04/18 职场文书
社区党支部承诺书
2015/04/29 职场文书
2015年党总支工作总结
2015/05/25 职场文书
公司职员入党自传书
2015/06/26 职场文书
清明节随笔
2015/08/15 职场文书
2016年寒假学习心得体会
2015/10/09 职场文书
如何使用 resize 实现图片切换预览功能
2021/08/23 HTML / CSS