輸出雙螺旋矩陣

2021-07-11 23:10:09 字數 1128 閱讀 2199

實驗室師兄找工作時在有道遇到的一道筆試題:列印雙螺旋矩陣。

雙螺旋矩陣的定義如下,矩陣的最中心是1,往上是2,右拐3,向下4,然後依次5、6,7...構成一條順序增大的螺旋線,此外,如果從中心往下走的話,也是一條對稱的螺旋線。題目是給定乙個矩陣維度n,將其列印出來,示例如下。要求在紙上把**寫完整,時間半小時左右。

25    14    15    16    17    18    19

24    13     6     7       8     9      20

23    12     5     2       3    10     21

22    11     4     1       4    11     22

21    10     3     2       5    12     23

20     9      8     7       6    13     24

19    18    17    16    15    14    25

看上去似乎挺簡單,但是做的時候還是遇到了一些麻煩,最後參考師兄的思路,我給出了下面的實現。基本思路是,先列印中心,然後一圈一圈地將外圍矩陣列印出來。列印每圈的時候,先分別計算出左上角和右下角的座標(pos)和值,然後沿著螺旋線的方向,從左上角出發列印這一圈矩陣的上邊和右邊;從右下角出發列印下邊和左邊。**如下,能夠正確執行,歡迎提出意見。

#include 

#include 

#include 

typedef

struct

position;

void

print_screws_matrix( 

intsize )

/* calculate right and left sides of screw */

for( i = 0; i < 2*screwnum; ++i ) 

}/* print matrix */

for( i = 0; i < size; ++i ) 

for( i = 0; i < size; ++i )

free( matrix[i] );

free( matrix );

}int

main()

參考:

輸出螺旋矩陣

螺旋矩陣 是指乙個呈螺旋狀的矩陣,它的數字由第一行開始到右邊不斷變大,向下變大,向左變大,向上變大,如此迴圈。如圖1 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 輸出螺旋矩陣 author zhanliqing ...

輸出螺旋矩陣

關於螺旋矩陣的說法不一,這裡指的是形如 21 22.20 7 8 9 10 19 6 1 2 11 18 5 4 3 12 17 16 15 14 13 的矩陣。問題有兩個 1.程式設計實現輸出這個矩陣 2.設1點的座標是 0,0 x方向向右為正,y方向向下為正.例如 7的座標為 1,1 2的座標為...

矩陣螺旋輸出

劍指 offer 29.順時針列印矩陣 輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。1.用行增量和列增量決定下一步方向 2.到達邊界時,換方向 同時縮小邊界條件 3.當左右邊界,上下邊界重合時了,完成全部遍歷 param matrix return var spiralorder ...