python 生成螺旋矩陣


 螺旋矩陣,像下面這樣,看了就能理解,不多解釋了。

[[ 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.先生成一個零矩陣,再往里面填充數字;
2.每填充完一個,都判斷下一步該往哪走,下一步有四種狀態:橫+、縱+、橫-、縱-,依次循環。
3.每種狀態間切換的條件:原狀態的下一步的元素已被填充(!=0)或索引溢出。

下面是一種具體實現(上面只是整體思路,與實現並不完全對應):
 1 import numpy as np
 2 def r_matrix(n):
 3     mt = np.zeros(n**2).reshape(n,n)
 4     x, y = 0, 0
 5     num = 1
 6     direction = 1
 7     
 8     while mt[x][y] == 0:
 9         mt[x][y] = num
10         num += 1
11         if -1<y+direction<n  and mt[x][y+direction] == 0:
12             y += direction
13         elif x+direction<n and mt[x+direction][y] == 0:
14             x += direction
15         else:
16             direction = -direction
17             y += direction
18     return mt  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM