网络编程
位置:首页>> 网络编程>> Python编程>> Python实现螺旋矩阵的填充算法示例

Python实现螺旋矩阵的填充算法示例

作者:afanty_mo  发布时间:2022-06-30 00:18:47 

标签:Python,矩阵,算法

本文实例讲述了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程序设计有所帮助。

来源:http://blog.csdn.net/mo_yihua/article/details/51743722

0
投稿

猜你喜欢

  • subplot(arg1, arg2, arg3)arg1: 在垂直方向同时画几张图arg2: 在水平方向同时画几张图arg3: 当前命令修
  • 目录时间戳相减装饰器timeit模块重复调用 timeit()cProfile性能分析工具时间戳相减在代码执行前后各记录一个时间点,两个时间
  • 题目描述682. 棒球比赛你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。比赛
  • 首先,了解下原理。1,提供文本框进行查询内容的输入2,将查询信息提交页面程序处理3,程序页主要作用:接受查询信息,根据此信息调用特定的SQL
  • 迭代器&生成器在 Python 中,迭代器和生成器都是用来遍历数据集合的工具,可以按需逐个生成或返回数据,从而避免一次性加载整个数据
  • 如下所示:import cv2 # [1]导入OpenCv开源库import numpy as npimage_path = "F
  • 摘要: 阐述一种全新的ASP模板引擎,实现代码(逻辑)层与HTML(表现)层的分离.这种模板实现方法避免了一般ASP模板加载模板文件(加载组
  • 在今天的设计中,排版常常被忽视,特别是被网页设计师忽视。这真是件遗憾的事情因为CSS可以做很多事情来控制我们的排版。也就是说,我们被局限于某
  • phpMyAdmin错误 缺少 mysqli 扩展。请检查 PHP 配置 的解决方案phpMyAdmin 缺少 mysqli 扩展。请检查
  • 如何用表单在线建立目录?很简单,两个文件就搞定了:creatfolder.htm' 表单文件<form n
  • 从ASP初入门到PHP,感觉到PHP的强大之一就是内置函数的丰富,比如先前学习的PHP日期时间函数,读写文件的相关函数等都无不表明了PHP的
  • MySQL的ODBC接口实现是通过安装MyODBC驱动,这个驱动程序是跨平台的。如果在Linux等Unix体系操作系统下使用,需要先安装Io
  • 之前在懒懒分会上分享的一点关于border画小图的内容, 完整的ppt在这里.原理css盒模型一个盒子包括: margin+border+p
  • 今天在这里,不以设计师的身份,而从一个普通用户的角度和各位聊聊设计中蕴含的那份情感,关于情感再产品设计中的意义,聊聊设计中的那份源于“心”的
  •     1.如何在网页中插入空格 我们在用Dreamweaver的所见即所得编辑模式下编辑中文网页时,往往需要
  • PHP是一种面向对象的编程语言,它允许开发者使用面向对象的编程技术来构建复杂的应用程序。下面是一些关于PHP面向对象编程的讲解:类与对象类是
  • Session 对象 可以使用 Session 对象存储特定用户会话所需的信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Se
  • 栅格就是你对页面版式的规划你日常所见的许多页面都有栅格存在。你可能注意不到,但它确实存在,并且支撑着设计内容,建立整体的架构,引导着页面的元
  • <html><head><title>过滤空格</title><SCRIPT LANG
  • 要开发一个基于数据库的应用系统,其中最关键的一步就是整个系统所依据的数据库的建模设计,从逻辑的到物理的,一个环节疏于设计,整个的应用系统便似
手机版 网络编程 asp之家 www.aspxhome.com