本文实例讲述了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
二、思路
常规法是不断的对数据边界进行判断会很复杂,不妨考虑通过递归的解决每一层的数字。
三、代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#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程序设计有所帮助。
原文链接:http://blog.csdn.net/qq_26392583/article/details/61435200