Python实现打印螺旋矩阵功能的方法


Posted in Python onNovember 21, 2017

本文实例讲述了Python实现打印螺旋矩阵功能的方法。分享给大家供大家参考,具体如下:

一、问题描述

输入N, 打印 N*N 螺旋矩阵

比如 N = 3,打印:
1 2 3
8 9 4
7 6 5

N = 4,打印:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7

二、思路

常规法是不断的对数据边界进行判断会很复杂,不妨考虑通过递归的解决每一层的数字。

三、代码

#coding:utf-8
n = int(raw_input('>'))
#初始化数组
arr = [[0]*n for i in range(n)]
#递归解决
def dfs(arr, x, y, start, n):
  if n<=0:return 0
  if n==1:
    arr[x][y] = start
    return 0
  #up
  for i in range(n):
    arr[x][y+i] = start
    start += 1
  #right
  for i in range(n-1):
    arr[x+1+i][y+n-1] = start
    start += 1
  #down
  for i in range(n-1):
    arr[x+n-1][y+n-2-i] = start
    start += 1
  #left
  for i in range(n-2):
    arr[x+n-2-i][y] = start
    start += 1
  dfs(arr,x+1,y+1,start,n-2)
a = dfs(arr,0,0,1,n)
#格式化输出print
l = len(str(n*n))+1
format = ('%'+str(l)+'d')*n
for tmp in arr:
  print format%tuple(tmp)

运行结果:

Python实现打印螺旋矩阵功能的方法

Python实现打印螺旋矩阵功能的方法

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python 动态获取当前运行的类名和函数名的方法
Apr 15 Python
python使用PyFetion来发送短信的例子
Apr 22 Python
Python 2.7.x 和 3.x 版本的重要区别小结
Nov 28 Python
Python获取linux主机ip的简单实现方法
Apr 18 Python
[原创]使用豆瓣提供的国内pypi源
Jul 02 Python
python中os和sys模块的区别与常用方法总结
Nov 14 Python
详细分析python3的reduce函数
Dec 05 Python
如何利用Anaconda配置简单的Python环境
Jun 24 Python
Python统计学一数据的概括性度量详解
Mar 03 Python
使用Keras实现Tensor的相乘和相加代码
Jun 18 Python
python 实现围棋游戏(纯tkinter gui)
Nov 13 Python
解决pytorch下出现multi-target not supported at的一种可能原因
Feb 06 Python
Python中矩阵库Numpy基本操作详解
Nov 21 #Python
python GUI实例学习
Nov 21 #Python
Python实现判断一个字符串是否包含子串的方法总结
Nov 21 #Python
django中的setting最佳配置小结
Nov 21 #Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
Nov 21 #Python
详解supervisor使用教程
Nov 21 #Python
django模型层(model)进行建表、查询与删除的基础教程
Nov 21 #Python
You might like
PHP文件锁函数flock()详细介绍
2014/11/18 PHP
全面解读PHP的人气开发框架Laravel
2015/10/15 PHP
Yii中CGridView禁止列排序的设置方法
2016/07/12 PHP
golang与PHP输出excel示例
2016/07/22 PHP
js类的静态属性和实例属性的理解
2009/10/01 Javascript
jMessageBox 基于jQuery的窗口插件
2009/12/09 Javascript
基于jquery的滑动样例代码
2010/11/20 Javascript
js获取时间(本周、本季度、本月..)
2013/11/22 Javascript
表格奇偶行设置不同颜色的核心JS代码
2013/12/24 Javascript
详谈JavaScript内存泄漏
2014/11/14 Javascript
JS实现让网页背景图片斜向移动的方法
2015/02/25 Javascript
javascript实现将文件保存到本地方法汇总
2015/07/26 Javascript
理解 JavaScript EventEmitter
2018/03/29 Javascript
ES6 Proxy实现Vue的变化检测问题
2019/06/11 Javascript
vue实现从外部修改组件内部的变量的值
2020/07/30 Javascript
浅谈vue 多个变量同时赋相同值互相影响
2020/08/05 Javascript
Python中使用urllib2防止302跳转的代码例子
2014/07/07 Python
python 循环while和for in简单实例
2016/08/16 Python
Django User 模块之 AbstractUser 扩展详解
2020/03/11 Python
关于python中导入文件到list的问题
2020/10/31 Python
CSS3中动画属性transform、transition和animation属性的区别
2016/09/25 HTML / CSS
HTML5 canvas基本绘图之绘制阴影效果
2016/06/27 HTML / CSS
Html5 localStorage入门教程
2018/04/26 HTML / CSS
世界上最大的网络主机公司:1&1
2016/10/12 全球购物
为智能设备设计个性化保护套网站:caseable
2017/01/05 全球购物
巴西购物网站:Estrela10
2018/12/13 全球购物
杰夫·班克斯男士服装网上商店:Jeff Banks
2019/10/24 全球购物
vue路由实现登录拦截
2021/03/24 Vue.js
初二政治教学反思
2014/01/12 职场文书
机关会计岗位职责
2014/04/08 职场文书
中学教师师德师风演讲稿
2014/08/22 职场文书
教研活动主持词
2015/07/03 职场文书
高一军训感想
2015/08/07 职场文书
中小学教师继续教育心得体会
2016/01/19 职场文书
2019单位介绍信怎么写
2019/06/24 职场文书
Spring Cloud OpenFeign模版化客户端
2022/06/25 Java/Android