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之大话题小函数(2)
Oct 10 Python
Python实现简单的四则运算计算器
Nov 02 Python
放弃 Python 转向 Go语言有人给出了 9 大理由
Oct 20 Python
python实现读取大文件并逐行写入另外一个文件
Apr 19 Python
Python单元和文档测试实例详解
Apr 11 Python
python 普通克里金(Kriging)法的实现
Dec 19 Python
Tensorflow之梯度裁剪的实现示例
Mar 08 Python
在django中使用post方法时,需要增加csrftoken的例子
Mar 13 Python
python爬虫实现POST request payload形式的请求
Apr 30 Python
python使用scapy模块实现ping扫描的过程详解
Jan 21 Python
Python 的 f-string 可以连接字符串与数字的原因解析
Feb 20 Python
python缺失值填充方法示例代码
Dec 24 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懒人函数 自动添加数据
2011/06/28 PHP
php中一个完整表单处理实现代码
2011/11/10 PHP
PHP生成二维码的两个方法和实例
2014/07/01 PHP
php多任务程序实例解析
2014/07/19 PHP
php实现扫描二维码根据浏览器类型访问不同下载地址
2014/10/15 PHP
PHP之图片上传类实例代码(加了缩略图)
2016/06/30 PHP
高亮显示web页表格行的javascript代码
2010/11/19 Javascript
使用jquery动态加载javascript以减少服务器压力
2012/10/29 Javascript
jquery 漂亮的删除确认和提交无刷新删除示例
2013/11/13 Javascript
js获取当前路径的简单示例代码
2014/01/08 Javascript
jQuery EasyUI Pagination实现分页的常用方法
2016/05/21 Javascript
Vue事件处理原理及过程详解
2020/03/11 Javascript
Vue + element 实现多选框组并保存已选id集合的示例代码
2020/06/03 Javascript
[01:34]DOTA2 7.22版本新增神杖效果一览(敏捷英雄篇)
2019/05/28 DOTA
[01:21:58]守擂赛DOTA2第一周决赛
2020/04/22 DOTA
python 简易计算器程序,代码就几行
2009/08/29 Python
python导出chrome书签到markdown文件的实例代码
2017/12/27 Python
python读取并写入mat文件的方法
2019/07/12 Python
django+tornado实现实时查看远程日志的方法
2019/08/12 Python
python django中8000端口被占用的解决
2019/12/17 Python
python垃圾回收机制(GC)原理解析
2019/12/30 Python
python中使用paramiko模块并实现远程连接服务器执行上传下载功能
2020/02/29 Python
python连接mysql数据库并读取数据的实现
2020/09/25 Python
ivx平台开发之不用代码实现一个九宫格抽奖功能
2021/01/27 HTML / CSS
Lululemon加拿大官网:加拿大知名体育服装零售商
2019/04/12 全球购物
澳大利亚著名的纺织品品牌:Canningvale
2020/05/05 全球购物
企业节能减排实施方案
2014/03/19 职场文书
室内设计专业毕业生求职信
2014/05/02 职场文书
道德之星事迹材料
2014/05/03 职场文书
就业推荐表导师评语
2014/12/31 职场文书
2015年七一建党节活动方案
2015/05/05 职场文书
2015年度合同管理工作总结
2015/05/22 职场文书
2015年绩效考核工作总结
2015/05/23 职场文书
基于nginx实现上游服务器动态自动上下线无需reload的实现方法
2021/03/31 Servers
《原神》新角色演示“神里绫人:林隐泓洄” 宠妹狂魔
2022/04/03 其他游戏
ssh服务器拒绝了密码 请再试一次已解决(亲测有效)
2022/08/14 Servers