python

超轻量级php框架startmvc

Python实现打印螺旋矩阵功能的方法

更新时间:2020-05-11 21:18:01 作者:startmvc
本文实例讲述了Python实现打印螺旋矩阵功能的方法。分享给大家供大家参考,具体如下:一

本文实例讲述了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 打印 螺旋矩阵