Python螺旋矩阵的生成

一.问题描述

像如图所示的矩阵称为外螺旋矩阵,请问在30行×30列的螺旋矩阵中,第20行第20列的数字是多少?

1	2	3	4	
 
12	13	14	5	
 
11	16	15	6	
 
10	9	8	7	

二.思路分析

首先螺旋矩阵是按照从左到右,从上到下,从右到左,从下到上的方式进行生成的,可以设置了两个循环,一个代表行列数的变化,另一个则代表在同一行(列),列(行)的变化;通过循环逐步生成矩阵,最后查找指定位置即。

三.代码实现 

n=int(input())
a= [[0]*n for i in range(n)]      #生成n×n的二维数组
b=1                               #第一个数字为1
left,right,up,down=0,n-1,0,n-1    #初始化,第一行,最底行,第一列,最后一列
while left < right and up <down:  #满足条件进行循环
    for i in range(left,right):   #先从左向右进行赋值
        a[up][i]=b
        b+=1
    for i in range(up,down):      #再从上到下进行赋值
        a[i][right]=b
        b+=1
    for i in range(right,left,-1):#再从右向左进行赋值
        a[down][i]=b
        b+=1
    for i in range(down,up,-1):  #最后从下到上进行赋值 
        a[i][left]=b
        b+=1
    left+=1                      #下一次循环需要改变行列的值
    right-=1
    up+=1
    down-=1
 print(a[19][19])                #输出指定位置的值

819

 以10×10矩阵为例,可以发现正确

1 2 3 4 5 6 7 8 9 10
36 37 38 39 40 41 42 43 44 11
35 64 65 66 67 68 69 70 45 12
34 63 84 85 86 87 88 71 46 13
33 62 83 96 97 98 89 72 47 14
32 61 82 95 100 99 90 73 48 15
31 60 81 94 93 92 91 74 49 16
30 59 80 79 78 77 76 75 50 17
29 58 57 56 55 54 53 52 51 18
28 27 26 25 24 23 22 21 20 19

四.结语

作为小白一枚,记录自己的成长,分享出来,欢迎大佬指正。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>