螺旋矩陣程式設計實現

2021-06-10 13:07:26 字數 2103 閱讀 9148

今天看到google的一道面試題為

輸出如下的矩陣(輸入為方陣的行數n)

a=1       16      15      14      13

2       17      24      23      12

3       18      25      22      11

4       19      20      21      10

5       6        7        8        9

也不知道怎麼個叫法, 暫且叫它螺旋矩陣吧.

瞎想了兩種實現方法,胡亂寫的,明天再看看別人怎麼做的罷:

一, 以下圖的方式,從(0,0)元素開始,逆時針計算,這裡每計算n-1次就轉個方向, 連續四次後,剩下就是乙個(n-2)*(n-2)的矩陣, 可以遞迴處理,

a=1  

16      15      14      13

2       17      24      23      12

3       18      25      22      11

4       19      20      21    10

5       6       7       8  

9  

二. 另外一種方法是先找乙個(n+1)*(n+1)的全0矩陣tempa,把這個矩陣的四周的元素都賦值1(非零),如:(n=5)

tempa=

1       1       1       1       1       1       1

10       0       0       0       01

10       0       0       0       01

10       0       0       0       01

10       0       0       0       01

10       0       0       0       01

1       1       1       1       1       1       1

然後從(1,1)元素開始,逆時針填入1-25,有點像沿著牆壁走,非零的值就是牆壁,一旦碰壁就向左轉.

最後變成

tempa=

1       1        1        1        1        1        1

1       1       16      15      14      13      1

1       2       17      24      23      12      1

1       3       18      25      22      11      1

1       4       19      20      21      10      1

1       5        6        7        8        9       1

1       1        1        1        1        1       1

然後把temp中的a部分取出來

a=1       16      15      14      13

2       17      24      23      12

3       18      25      22      11

4       19      20      21      10

5       6       7       8       9

實現**如下:

#include#include#include#include#define down 1

#define right 2

#define up 3

#define left 4

void spiral_matrix(int *a, int n)

printf("tempa=\n");

for(i=0;i

python實現螺旋矩陣

import numpy 使用遞迴解決 def helixmatrix matrix,x cur,y cur,number,n if n 0 print matrix return 0 if n 1 matrix x cur y cur number print matrix return 0 上f...

螺旋矩陣生成 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 ...

54 螺旋矩陣(JS實現)

給定乙個包含 m x n 個元素的矩陣 m 行,n 列 請按照順時針螺旋順序,返回矩陣中的所有元素。示例 1 輸入 1,2,3 4,5,6 7,8,9 輸出 1,2,3,6,9,8,7,4,5 示例 2 輸入 1,2,3,4 5,6,7,8 9,10,11,12 輸出 1,2,3,4,8,12,11...