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写的Discuz7.2版faq.php注入漏洞工具
Aug 06 Python
Python实现单词拼写检查
Apr 25 Python
python中(str,list,tuple)基础知识汇总
Feb 20 Python
python实现手机通讯录搜索功能
Feb 22 Python
在python中按照特定顺序访问字典的方法详解
Dec 14 Python
从列表或字典创建Pandas的DataFrame对象的方法
Jul 06 Python
Python进阶之迭代器与迭代器切片教程
Jan 29 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
Feb 27 Python
pandas数据拼接的实现示例
Apr 16 Python
Django中Q查询及Q()对象 F查询及F()对象用法
Jul 09 Python
一篇文章教你用python画动态爱心表白
Nov 22 Python
C3 线性化算法与 MRO之Python中的多继承
Oct 05 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令牌 Token改进版
2008/07/18 PHP
Drupal简体中文语言包安装教程
2014/09/27 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
2014/11/03 PHP
PHP使用SMTP邮件服务器发送邮件示例
2018/08/28 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
对YUI扩展的Gird组件 Part-1
2007/03/10 Javascript
fckeditor 获取文本框值的实现代码
2009/02/09 Javascript
JavaScript高级程序设计 阅读笔记(二十一) JavaScript中的XML
2012/09/14 Javascript
JS this作用域以及GET传输值过长的问题解决方法
2013/08/06 Javascript
求数组最大最小值方法适用于任何数组
2013/08/16 Javascript
Ionic默认的Tabs模板使用实例
2016/08/29 Javascript
jQuery实现导航高亮的方法【附demo源码下载】
2016/11/09 Javascript
Bootstrap轮播图的使用和理解4
2016/12/14 Javascript
Vue实现动态响应数据变化
2017/04/28 Javascript
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
Vue2.0生命周期的理解
2018/08/20 Javascript
Vue实现表格中对数据进行转换、处理的方法
2018/09/06 Javascript
Angular 实现输入框中显示文章标签的实例代码
2018/11/07 Javascript
js实现下拉框二级联动
2018/12/04 Javascript
详解JavaScript 的变量
2019/03/08 Javascript
通过javascript实现段落的收缩与展开
2019/06/26 Javascript
vue实现表单录入小案例
2019/09/27 Javascript
vue实现匀速轮播效果
2020/06/29 Javascript
[41:52]2018DOTA2亚洲邀请赛3月29日小组赛B组Effect VS Secret
2018/03/30 DOTA
python中enumerate函数遍历元素用法分析
2016/03/11 Python
Python自动化测试ConfigParser模块读写配置文件
2016/08/15 Python
Python全排列操作实例分析
2018/07/24 Python
详解Python Matplot中文显示完美解决方案
2019/03/07 Python
django解决订单并发问题【推荐】
2019/07/31 Python
Django 解决开发自定义抛出异常的问题
2020/05/21 Python
python装饰器代码深入讲解
2021/03/01 Python
css3新增颜色表示方式分享
2014/04/15 HTML / CSS
Hotter Shoes英国官网:英伦风格,舒适的鞋子
2017/12/28 全球购物
会计职业生涯规划范文
2014/01/04 职场文书
语文高效课堂实施方案
2014/05/03 职场文书
销售提升方案
2014/06/07 职场文书