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中使用enumerate函数遍历元素实例
Jun 16 Python
Python中replace方法实例分析
Aug 20 Python
Python的设计模式编程入门指南
Apr 02 Python
实例解析Python中的__new__特殊方法
Jun 02 Python
Python使用迭代器捕获Generator返回值的方法
Apr 05 Python
Python对列表中的各项进行关联详解
Aug 15 Python
Python数据结构与算法之完全树与最小堆实例
Dec 13 Python
Windows上使用Python增加或删除权限的方法
Apr 24 Python
python MNIST手写识别数据调用API的方法
Aug 08 Python
python3连接kafka模块pykafka生产者简单封装代码
Dec 23 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
Sep 17 Python
python实现代码审查自动回复消息
Feb 01 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
收音机怀古---春雷3P7图片欣赏
2021/03/02 无线电
PHP 判断变量类型实现代码
2009/10/23 PHP
php语言流程控制中的主动与被动
2012/11/05 PHP
php并发对MYSQL造成压力的解决方法
2013/02/21 PHP
thinkphp模板用法和内容输出实例
2014/11/28 PHP
PHP实现的迷你漂流瓶
2015/07/29 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
php版微信自动登录并获取昵称的方法
2016/09/23 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
PHP实现小程序批量通知推送
2018/11/27 PHP
JavaScript中使用replace结合正则实现replaceAll的效果
2010/06/04 Javascript
Jquery 获取checkbox的checked问题
2011/11/16 Javascript
JS中window.open全屏命令解析及使用示例
2013/12/11 Javascript
再分享70+免费的jquery 图片滑块效果插件和教程
2014/12/15 Javascript
js打造数组转json函数
2015/01/14 Javascript
JavaScript使用concat连接数组的方法
2015/04/06 Javascript
JavaScript记录光标在编辑器中位置的实现方法
2016/04/22 Javascript
Vue.js 2.0学习教程之从基础到组件详解
2017/04/24 Javascript
在React中如何优雅的处理事件响应详解
2017/07/24 Javascript
vue滚动轴插件better-scroll使用详解
2017/10/17 Javascript
小程序tab页无法传递参数的方法
2018/08/03 Javascript
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
2019/01/18 jQuery
Node.js API详解之 net模块实例分析
2020/05/18 Javascript
Vue实现穿梭框效果
2020/09/30 Javascript
[47:20]DAC2018 4.4 淘汰赛 Optic vs Mineski 第一场
2018/04/05 DOTA
python中(str,list,tuple)基础知识汇总
2018/02/20 Python
python实现字符串和字典的转换
2018/09/29 Python
python使用自定义钉钉机器人的示例代码
2020/06/24 Python
电子商务专业实习生自我鉴定
2013/09/24 职场文书
工作失误检讨书范文大全
2014/01/13 职场文书
建筑系毕业生自我鉴定
2014/01/24 职场文书
2016保送生自荐信范文
2016/01/29 职场文书
全国劳模先进事迹材料(2016精选版)
2016/02/25 职场文书
基于Redis位图实现用户签到功能
2021/05/08 Redis
世界十大狙击步枪排行榜
2022/03/20 杂记