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实现类似ftp传输文件的网络程序示例
Apr 08 Python
Python采用Django制作简易的知乎日报API
Aug 03 Python
Python利用Beautiful Soup模块搜索内容详解
Mar 29 Python
示例详解Python3 or Python2 两者之间的差异
Aug 23 Python
简单了解python反射机制的一些知识
Jul 13 Python
Python 使用 Pillow 模块给图片添加文字水印的方法
Aug 30 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
Oct 11 Python
python图形用户接口实例详解
Dec 16 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
Mar 13 Python
Python3爬虫中关于Ajax分析方法的总结
Jul 10 Python
Python生成pdf目录书签的实例方法
Oct 29 Python
Python爬虫中urllib3与urllib的区别是什么
Jul 21 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管理内存函数 memory_get_usage()使用介绍
2012/09/23 PHP
php函数array_merge用法一例(合并同类数组)
2013/02/03 PHP
浅析SVN常见问题及解决方法
2013/06/21 PHP
PHP使用PDO连接ACCESS数据库
2015/03/05 PHP
关于PHP内置的字符串处理函数详解
2017/02/04 PHP
php strftime函数的详细用法
2018/06/21 PHP
php7 参数、整形及字符串处理机制修改实例分析
2020/05/25 PHP
js 新浪的一个图片播放图片轮换效果代码
2008/07/15 Javascript
查看图片(前进后退)功能实现js代码
2013/04/24 Javascript
ExtJS4中的requires使用方法示例介绍
2013/12/03 Javascript
使用jquery菜单插件HoverTree仿京东无限级菜单
2014/12/18 Javascript
javascript实现的多个层切换效果通用函数实例
2015/07/06 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
2015/08/27 Javascript
微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)
2017/01/12 Javascript
Javascript之深入浅出prototype
2017/02/06 Javascript
Node之简单的前后端交互(实例讲解)
2017/11/14 Javascript
JS实现百度搜索接口及链接功能实例代码
2018/02/02 Javascript
JS+H5 Canvas实现时钟效果
2018/07/20 Javascript
vue 项目接口管理的实现
2019/01/17 Javascript
Vue+element 解决浏览器自动填充记住的账号密码问题
2019/06/11 Javascript
简单的连接MySQL与Python的Bottle框架的方法
2015/04/30 Python
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
2015/05/02 Python
win10环境下python3.5安装步骤图文教程
2017/02/03 Python
PyCharm 2020.2 安装详细教程
2020/09/25 Python
html5 canvas实现圆形时钟代码分享
2013/12/25 HTML / CSS
Jimmy Choo美国官网:周仰杰鞋子品牌
2018/06/08 全球购物
司机辞职报告范文
2014/01/20 职场文书
毕业自我评价
2014/02/05 职场文书
高中军训感言200字
2014/02/23 职场文书
经理秘书求职自荐信范文
2014/03/23 职场文书
节能标语大全
2014/06/21 职场文书
旅游与酒店管理专业求职信
2014/07/21 职场文书
先进事迹演讲稿
2014/09/01 职场文书
php 解析非标准json、非规范json
2021/04/01 PHP
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
2021/11/27 Vue.js
Mysql忘记密码解决方法
2022/02/12 MySQL