本文实例讲述了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-8n = 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)#格式化输出printl = len(str(n*n))+1format = ('%'+str(l)+'d')*nfor tmp in arr:  print format%tuple(tmp)运行结果:
	
	
希望本文所述对大家Python程序设计有所帮助。
新闻热点
疑难解答