輸出螺旋矩陣

2021-07-09 15:36:30 字數 844 閱讀 5089

關於螺旋矩陣的說法不一,這裡指的是形如

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的座標為(0,1),3的座標為(1,1).程式設計實現輸入任意一點座標  (x,y),輸出所對應的數字。

1. 第乙個問題我是採用模擬進行構造的,可以看到從1開始的方向變化始終是 right->down->left->up,

所持續走的長度為1->1->2->2->3->3->4->4...,發現了這個規律不難寫出**了!

void luxuanmatrix(int n)

data[x][y] = num++;

}count++;

if(count == 2)

dir = (dir + 1) % 4;}}

2. 第二個問題也是先找出規律,我們可以把它看成是一層一層往外擴充套件的,第0層為乙個1,第一層為2到9.。。。第t層共有(2t-1)*(2t-1)個數,第t+1層會從(2t-1)*(2t-1)+1開始往外螺旋,給定座標(x,y)就知道該點存在的層數 t=max(|x|,|y|)。

(取自《程式設計師面試寶典》(第四版)96頁)

int foo(int x, int y) else if(y == -t) else if(y == t) else

v += y - t;

return v;}

輸出螺旋矩陣

螺旋矩陣 是指乙個呈螺旋狀的矩陣,它的數字由第一行開始到右邊不斷變大,向下變大,向左變大,向上變大,如此迴圈。如圖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 ...

矩陣螺旋輸出

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

輸出螺旋矩陣 二

輸出這樣的二維陣列 1 3 4 10 11 2 5 9 12 19 6 8 13 18 20 7 14 17 21 24 15 16 22 23 25 sub spiralmetrix byval n as integer n n 1 dim i as integer,j as integer,a ...