今天看到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...