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相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python加密解密算法与技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

以上是 Python实现打印螺旋矩阵功能的方法 的全部内容, 来源链接: utcz.com/z/329260.html

回到顶部