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中函数的用法实例教程
Sep 08 Python
python获取android设备的GPS信息脚本分享
Mar 06 Python
详解Django中的ifequal和ifnotequal标签使用
Jul 16 Python
python3批量删除豆瓣分组下的好友的实现代码
Jun 07 Python
Python列表切片用法示例
Apr 19 Python
详解python如何在django中为用户模型添加自定义权限
Oct 15 Python
深入学习python多线程与GIL
Aug 26 Python
在Python中画图(基于Jupyter notebook的魔法函数)
Oct 28 Python
python 删除excel表格重复行,数据预处理操作
Jul 06 Python
利用Python实现Json序列化库的方法步骤
Sep 09 Python
关于Numpy之repeat、tile的用法总结
Jun 02 Python
Python中OpenCV实现简单车牌字符切割
Jun 11 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显示Facebook的粉丝数量方法
2014/01/08 PHP
浅谈PHP封装CURL
2019/03/06 PHP
Javascript实例教程(19) 使用HoTMetal(6)
2006/12/23 Javascript
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
2007/12/23 Javascript
window.dialogArguments 使用说明
2011/04/11 Javascript
jquery中push()的用法(数组添加元素)
2014/11/25 Javascript
JavaScript页面模板库handlebars的简单用法
2015/03/02 Javascript
jQuery菜单插件superfish使用指南
2015/04/21 Javascript
浏览器兼容性问题大汇总
2015/12/17 Javascript
Bootstrap每天必学之折叠(Collapse)插件
2016/04/25 Javascript
BootStrap中的表单大全
2016/09/07 Javascript
详解wow.js中各种特效对应的类名
2017/09/13 Javascript
基于 Vue.js 2.0 酷炫自适应背景视频登录页面实现方式
2018/01/17 Javascript
vue-devtools的安装步骤
2018/04/23 Javascript
vue路由教程之静态路由
2019/09/03 Javascript
ES10的13个新特性示例(小结)
2019/09/23 Javascript
vue-cli3使用mock数据的方法分析
2020/03/16 Javascript
vue 微信分享回调iOS和安卓回调出现错误的解决
2020/09/07 Javascript
Python如何读取MySQL数据库表数据
2017/03/11 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
使用 Python 实现文件递归遍历的三种方式
2018/07/18 Python
Python增强赋值和共享引用注意事项小结
2019/05/28 Python
python 列表转为字典的两个小方法(小结)
2019/06/28 Python
对Django中内置的User模型实例详解
2019/08/16 Python
Python Gluon参数和模块命名操作教程
2019/12/18 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
2020/05/08 Python
keras之权重初始化方式
2020/05/21 Python
使用Python FastAPI构建Web服务的实现
2020/06/08 Python
面向新手解析python Beautiful Soup基本用法
2020/07/11 Python
Matplotlib中%matplotlib inline如何使用
2020/07/28 Python
暑期社会实践学生的自我评价
2014/01/09 职场文书
物理研修随笔感言
2014/02/14 职场文书
人力资源主管职责范本
2014/03/05 职场文书
单位工程竣工验收方案
2014/03/16 职场文书
《三顾茅庐》教学反思
2014/04/10 职场文书
信访维稳工作汇报
2014/10/27 职场文书