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

yipeiwu_com6年前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多进程(加入进程池)操作常见案例

本文实例讲述了python多进程(加入进程池)操作。分享给大家供大家参考,具体如下: 一、多进程复制多个文件 import multiprocessing import os imp...

Python微信公众号开发平台

Python微信公众号开发平台

  上大学的时候,对微信公众号开发浅尝辄止的玩了一下,感觉还是挺有意思的。 /post/133677.htm后来服务器到期了,也就搁置了。由于发布web程序,使用PHP很顺手,...

python3.7 利用函数os pandas利用excel对文件名进行归类

python3.7 利用函数os pandas利用excel对文件名进行归类

这里用的python 版本是3.7最新的版本写的。 利用excel ,对门店的二维码对对应所属小区进行分类,比如在excel 江南摩尔店对应浙北大区,那么二维码名字为...

python MNIST手写识别数据调用API的方法

python MNIST手写识别数据调用API的方法

MNIST数据集比较小,一般入门机器学习都会采用这个数据集来训练 下载地址:yann.lecun.com/exdb/mnist/ 有4个有用的文件: train-images-idx3...

win10环境下配置vscode python开发环境的教程详解

win10环境下配置vscode python开发环境的教程详解

前言 VScode是一个相当优秀的IDE,具备开源、跨平台、模块化、插件丰富、启动时间快、颜值高、可高度定制等等优秀的特质,不愧是微软爸爸的私生子。 所以用VScode来编写Pyth...