本文實例講述了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