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正则表达式中的括号匹配问题
Dec 14 Python
python模拟登录并且保持cookie的方法详解
Apr 04 Python
Django Admin 实现外键过滤的方法
Sep 29 Python
Python基础语言学习笔记总结(精华)
Nov 14 Python
解决pycharm无法调用pip安装的包问题
May 18 Python
Python使用pickle模块储存对象操作示例
Aug 15 Python
Python实现合并两个有序链表的方法示例
Jan 31 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
Feb 26 Python
python的列表List求均值和中位数实例
Mar 03 Python
python实现图书馆抢座(自动预约)功能的示例代码
Sep 29 Python
Python打包exe时各种异常处理方案总结
May 18 Python
python自动化测试之Selenium详解
Mar 13 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
模仿OSO的论坛(五)
2006/10/09 PHP
php error_log 函数的使用
2009/04/13 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
2011/10/17 PHP
thinkPHP查询方式小结
2016/01/09 PHP
PHP获取用户访问IP地址的5种方法
2016/05/16 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
2017/06/06 PHP
Prototype使用指南之base.js
2007/01/10 Javascript
JavaScript 函数调用规则
2009/09/14 Javascript
js类的静态属性和实例属性的理解
2009/10/01 Javascript
document.onreadystatechange事件的用法分析
2009/10/17 Javascript
jQuery 位置函数offset,innerWidth,innerHeight,outerWidth,outerHeight,scrollTop,scrollLeft
2010/03/23 Javascript
javascript 基础篇4 window对象,DOM
2012/03/14 Javascript
javascript属性访问表达式用法分析
2015/04/25 Javascript
jQuery实现下拉框功能实例代码
2016/05/06 Javascript
基于HTML+CSS+JS实现增加删除修改tab导航特效代码
2016/08/05 Javascript
利用BootStrap弹出二级对话框的简单实现方法
2016/09/21 Javascript
详解JavaScript调用栈、尾递归和手动优化
2017/06/03 Javascript
详解vue-cli本地环境API代理设置和解决跨域
2017/09/05 Javascript
30分钟快速实现小程序语音识别功能
2018/11/27 Javascript
浅谈小程序globalData的那些事儿
2019/11/01 Javascript
js实现蒙版效果
2020/01/11 Javascript
[55:47]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第三局
2016/02/27 DOTA
对于Python的Django框架使用的一些实用建议
2015/04/03 Python
详谈python在windows中的文件路径问题
2018/04/28 Python
python实现从pdf文件中提取文本,并自动翻译的方法
2018/11/28 Python
python中的数据结构比较
2019/05/13 Python
使用python将mysql数据库的数据转换为json数据的方法
2019/07/01 Python
python中 * 的用法详解
2019/07/10 Python
50岁生日感言
2014/01/23 职场文书
境外导游求职信
2014/02/27 职场文书
双方协议书
2014/04/22 职场文书
员工保密协议书
2014/09/27 职场文书
幼儿园教师教育随笔
2015/08/14 职场文书
使用pandas模块实现数据的标准化操作
2021/05/14 Python
详解CSS玩转图片Base64编码
2021/05/25 HTML / CSS
java实现对Hadoop的操作
2021/07/01 Java/Android