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实现在字符串中查找子字符串的方法
Jul 11 Python
python使用tornado实现简单爬虫
Jul 28 Python
python构建基础的爬虫教学
Dec 23 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
Apr 24 Python
浅谈keras保存模型中的save()和save_weights()区别
May 21 Python
python 在sql语句中使用%s,%d,%f说明
Jun 06 Python
keras的ImageDataGenerator和flow()的用法说明
Jul 03 Python
如何通过python实现IOU计算代码实例
Nov 02 Python
深入理解python多线程编程
Apr 18 Python
python 实现的截屏工具
May 08 Python
Python turtle实现贪吃蛇游戏
Jun 18 Python
Python图片验证码降噪和8邻域降噪
Aug 30 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
Cappuccino 卡布其诺咖啡之制作
2021/03/03 冲泡冲煮
PHP simple_html_dom.php+正则 采集文章代码
2009/12/24 PHP
php实现有趣的人品测试程序实例
2015/06/08 PHP
round robin权重轮循算法php实现代码
2016/05/28 PHP
laravel 5.3中自定义加密服务的方案详解
2017/05/09 PHP
PHP7基于curl实现的上传图片功能
2018/05/11 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
由document.body和document.documentElement想到的
2009/04/13 Javascript
jQuery live( type, fn ) 委派事件实现
2009/10/11 Javascript
从零开始学习jQuery (三) 管理jQuery包装集
2011/02/23 Javascript
JQuery与JSon实现的无刷新分页代码
2011/09/13 Javascript
jqTransform form表单美化插件使用方法
2012/07/05 Javascript
中国地区三级联动下拉菜单效果分析
2012/11/15 Javascript
Flow之一个新的Javascript静态类型检查器
2015/12/21 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
2016/06/02 Javascript
浅谈javascript基础之客户端事件驱动
2016/06/10 Javascript
js获取当前页的URL与window.location.href简单方法
2017/02/13 Javascript
vuejs2.0实现一个简单的分页示例
2017/02/22 Javascript
nodejs模块学习之connect解析
2017/07/05 NodeJs
jQuery实现的简单无刷新评论功能示例
2017/11/08 jQuery
JavaScript中创建原子的方法总结
2018/08/26 Javascript
解决axios post 后端无法接收数据的问题
2019/10/29 Javascript
vue深度监听(监听对象和数组的改变)与立即执行监听实例
2020/09/04 Javascript
分分钟入门python语言
2018/03/20 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
2019/01/08 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
2020/01/13 Python
PyCharm无法引用自身项目解决方式
2020/02/12 Python
踩坑:pytorch中eval模式下结果远差于train模式介绍
2020/06/23 Python
Python 高效编程技巧分享
2020/09/10 Python
Ruby如何实现动态方法调用
2012/11/18 面试题
老师自我鉴定范文
2013/12/25 职场文书
学生干部学习的自我评价
2014/02/18 职场文书
某集团股份有限公司委托书样本
2014/09/24 职场文书
电子商务专业求职信范文
2015/03/19 职场文书
工作失职自我检讨书
2015/05/05 职场文书
详解MySQL的主键查询为什么这么快
2022/04/03 MySQL