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装饰器使用的一些建议
Jun 03 Python
python使用arcpy.mapping模块批量出图
Mar 06 Python
Python编程实现生成特定范围内不重复多个随机数的2种方法
Apr 14 Python
Python中用字符串调用函数或方法示例代码
Aug 04 Python
python opencv之SURF算法示例
Feb 24 Python
Python下调用Linux的Shell命令的方法
Jun 12 Python
解决Python 中英文混输格式对齐的问题
Jul 16 Python
python 实现批量xls文件转csv文件的方法
Oct 23 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
Oct 30 Python
pytorch实现focal loss的两种方式小结
Jan 02 Python
Python装饰器实现方法及应用场景详解
Mar 26 Python
Python图像识别+KNN求解数独的实现
Nov 13 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笔记之:数据类型与常量的使用分析
2013/05/14 PHP
PHP curl实现抓取302跳转后页面的示例
2014/07/04 PHP
PHP实现的json类实例
2015/07/28 PHP
WordPress中对访客评论功能的一些优化方法
2015/11/24 PHP
Zend Framework连接Mysql数据库实例分析
2016/03/19 PHP
JS 实现双色表格实现代码
2009/11/24 Javascript
jquery 元素相对定位代码
2010/10/15 Javascript
js复制到剪切板的实例方法
2013/06/28 Javascript
onmouseover和onmouseout的一些问题思考
2013/08/14 Javascript
jQuery增加自定义函数的方法
2015/07/18 Javascript
浅谈javascript中的三种弹窗
2016/10/21 Javascript
Angular的MVC和作用域
2016/12/26 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
Javascript操作dom对象之select全面解析
2017/04/24 Javascript
JS实现的缓冲运动效果示例
2018/04/30 Javascript
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
2018/08/03 Javascript
JS使用Dijkstra算法求解最短路径
2019/01/17 Javascript
详解vue-cli3开发Chrome插件实践
2019/05/29 Javascript
JavaScript中callee和caller的区别与用法实例分析
2019/06/28 Javascript
Vuex的热更替如何实现
2020/06/05 Javascript
详细探究Python中的字典容器
2015/04/14 Python
python中的闭包用法实例详解
2015/05/05 Python
Python的Django框架中TEMPLATES项的设置教程
2015/05/29 Python
11月编程语言排行榜 Python逆袭C#上升到第4
2017/11/15 Python
pandas数据集的端到端处理
2019/02/18 Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
2020/06/01 Python
快速创建python 虚拟环境
2020/11/28 Python
深入浅析CSS3中的Flex布局整理
2020/04/27 HTML / CSS
Yves Rocher伊夫·黎雪美国官网:法国始创植物美肌1959
2019/01/09 全球购物
Prototype如何更新局部页面
2013/03/03 面试题
教师实习自我鉴定
2013/12/13 职场文书
五十岁生日宴会答谢词
2014/01/15 职场文书
团支部推优材料
2014/05/21 职场文书
2014年国庆节活动总结
2014/08/26 职场文书
十二月早安励志心语大全
2019/12/03 职场文书
vue整合百度地图显示指定地点信息
2022/04/06 Vue.js