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模块顶层运行的代码引起的一个Bug
Jul 04 Python
python BeautifulSoup设置页面编码的方法
Apr 03 Python
浅谈python中scipy.misc.logsumexp函数的运用场景
Jun 23 Python
python方向键控制上下左右代码
Jan 20 Python
python一键去抖音视频水印工具
Sep 14 Python
Pycharm 实现下一个文件引用另外一个文件的方法
Jan 17 Python
python下载卫星云图合成gif的方法示例
Feb 18 Python
新手学python应该下哪个版本
Jun 11 Python
Pycharm连接gitlab实现过程图解
Sep 01 Python
Elasticsearch py客户端库安装及使用方法解析
Sep 14 Python
用python修改excel表某一列内容的操作方法
Jun 11 Python
详解Python函数print用法
Jun 18 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
写一个用户在线显示的程序
2006/10/09 PHP
php中Y2K38的漏洞解决方法实例分析
2014/09/22 PHP
深入理解JavaScript定时机制
2010/10/29 Javascript
jquery弹出关闭遮罩层实例
2013/08/06 Javascript
基于javascript实现样式清新图片轮播特效
2016/03/30 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
2021/02/25 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
PHP获取当前页面完整URL的方法
2016/12/02 Javascript
JS 调试中常见的报错问题解决方法
2017/05/20 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
2017/07/21 Javascript
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
解决JavaScript中0.1+0.2不等于0.3问题
2018/10/23 Javascript
详解vue中使用微信jssdk
2019/04/19 Javascript
浅析VUE防抖与节流
2020/11/24 Vue.js
JavaScript实现网页跨年倒计时
2020/12/02 Javascript
[01:05:07]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第一场2月1日
2021/03/11 DOTA
python 删除大文件中的某一行(最有效率的方法)
2017/08/19 Python
Python列表推导式与生成器表达式用法示例
2018/02/08 Python
django+tornado实现实时查看远程日志的方法
2019/08/12 Python
python内置函数sorted()用法深入分析
2019/10/08 Python
python中的itertools的使用详解
2020/01/13 Python
Python virtualenv虚拟环境实现过程解析
2020/04/18 Python
python seaborn heatmap可视化相关性矩阵实例
2020/06/03 Python
Python如何获取文件路径/目录
2020/09/22 Python
python使用re模块爬取豆瓣Top250电影
2020/10/20 Python
教师师德教育的自我评价
2013/10/31 职场文书
文字自荐书范文
2014/02/10 职场文书
涉密人员保密承诺书
2014/05/28 职场文书
2014年售票员工作总结
2014/11/19 职场文书
初中作文评语
2014/12/25 职场文书
医院财务人员岗位职责
2015/04/14 职场文书
教师节主持词开场白
2015/05/29 职场文书
四十年同学聚会致辞
2015/07/28 职场文书
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
2021/10/16 Python
码云(gitee)通过git自动同步到阿里云服务器
2022/12/24 Servers