螺旋矩阵

违父母之命,弃安逸之生活。只身北漂,为我欲为。感谢在我成长中给我制造挫折的人。谢谢清华大学李瑞哥哥,虽一面之缘,仍念感激!

喜欢编程,喜欢计算机的朋友,在此我写一个简单算法的例子,初始化一个 N*N 的矩阵,从左上角第一个元素顺时针填充数字,范围1~N^2

二维螺旋矩阵

示例代码如下

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
34
35
36
37
38
39
40
41
42
43
44
#-*- coding: utf-8 -*-
import numpy
def HelixMatrix(n):
if not isinstance(n,int) or n <= 1:
raise ValueError('please input a valid number!')
matrix = numpy.zeros((n,n))
start = 0
skip = n-1
number = 1
while start < skip:
# 当向右移动,横坐标不变,纵坐标+1,number+1
i = start
while i < skip:
matrix[start][i] = number
i += 1
number += 1
#print(matrix)
#当向下移动,纵坐标不变,横坐标+1,number+1
i = start
while i < skip:
matrix[i][skip] = number
i += 1
number += 1
#print(matrix)
#当向左移动,横坐标不变,纵坐标-1,number+1
i = skip
while i > start:
matrix[skip][i] = number
i -= 1
number += 1
#print(matrix)
#当向上移动,纵坐标不变,横坐标-1,number+1
i = skip
while i > start:
matrix[i][start] = number
i -= 1
number += 1
start += 1
skip -= 1
#当二位矩阵的维数为奇数,最中间也就是最后一个值为0的元的值应该赋值n*n
if n%2 != 0:
matrix[int((n-1)/2)][int((n-1)/2)] = n*n
return matrix
print (HelixMatrix(6))

运行结果如下:

1
2
3
4
5
6
[ 1.  2.  3.  4.  5.  6.]
[20. 21. 22. 23. 24. 7.]
[19. 32. 33. 34. 25. 8.]
[18. 31. 36. 35. 26. 9.]
[17. 30. 29. 28. 27. 10.]
[16. 15. 14. 13. 12. 11.]

又逢周末,晚安

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 二维螺旋矩阵
    1. 1.1. 示例代码如下
      1. 1.1.1. 运行结果如下:
  2. 2. 又逢周末,晚安