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 相关文章推荐
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
Apr 13 Python
Python常用内置模块之xml模块(详解)
May 23 Python
python入门教程 python入门神图一张
Mar 05 Python
Flask框架信号用法实例分析
Jul 24 Python
pandas dataframe添加表格框线输出的方法
Feb 08 Python
Python利用WMI实现ping命令的例子
Aug 14 Python
python3实现高效的端口扫描
Aug 31 Python
Python OpenCV图像指定区域裁剪的实现
Oct 30 Python
Python selenium文件上传下载功能代码实例
Apr 13 Python
Python自动登录QQ的实现示例
Aug 28 Python
利用python清除移动硬盘中的临时文件
Oct 28 Python
python中scipy.stats产生随机数实例讲解
Feb 19 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
无线电的诞生过程
2021/03/01 无线电
隐藏你的.php文件的实现方法
2007/03/19 PHP
php xml文件操作代码(一)
2009/03/20 PHP
php生成curl命令行的方法
2015/12/14 PHP
php中bind_param()函数用法分析
2017/03/28 PHP
php面向对象的用户登录身份验证
2017/06/08 PHP
javascript实现划词标记+划词搜索功能
2007/03/06 Javascript
js中哈希表的几种用法总结
2014/01/28 Javascript
qq悬浮代码(兼容各个浏览器)
2014/01/29 Javascript
JS实现网页背景颜色与select框中颜色同时变化的方法
2015/02/27 Javascript
JavaScript日期类型的一些用法介绍
2015/03/02 Javascript
基于JavaScript代码实现兼容各浏览器的设为首页和加入收藏
2016/01/07 Javascript
如何消除inline-block属性带来的标签间间隙
2016/03/31 Javascript
jQuery UI插件实现百度提词器效果
2016/11/21 Javascript
VUE 更好的 ajax 上传处理 axios.js实现代码
2017/05/10 Javascript
微信小程序之swiper滑动面板用法示例
2018/12/04 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
2019/01/27 Javascript
layui lay-verify form表单自定义验证规则详解
2019/09/18 Javascript
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
Python中3种内建数据结构:列表、元组和字典
2014/11/30 Python
在Gnumeric下使用Python脚本操作表格的教程
2015/04/14 Python
Django基于ORM操作数据库的方法详解
2018/03/27 Python
详解python中__name__的意义以及作用
2019/08/07 Python
详解Python文件修改的两种方式
2019/08/22 Python
浅谈tensorflow模型保存为pb的各种姿势
2020/05/25 Python
基于第一个PhoneGap(cordova)的应用详解
2013/05/03 HTML / CSS
伦敦一卡通:The London Pass
2018/11/30 全球购物
捷克多品牌在线时尚商店:ANSWEAR.cz
2020/10/03 全球购物
雅虎笔试题(字符串操作)
2015/03/24 面试题
飞利信loadrunner和软件测试笔试题
2012/09/22 面试题
安全标兵事迹材料
2014/08/17 职场文书
天猫活动策划方案
2014/08/21 职场文书
2015年全国爱眼日活动方案
2015/05/05 职场文书
企业宣传语大全
2015/07/13 职场文书
军训心得体会范文(2016最新篇)
2016/01/11 职场文书
postman中form-data、x-www-form-urlencoded、raw、binary的区别介绍
2022/01/18 HTML / CSS