螺旋佇列問題

2021-06-28 18:22:24 字數 616 閱讀 4606

問題1:

看清以下數字排列的規律,設1點的座標是(0,0),x方向向右為正,y方向向下為正,例如,7的座標為(-1,-1),2的座標為(1,0),3的座標為(1,1)。程式設計實現輸入任意一點座標(x,y),輸出所對應的數字。

21 22 ...

20  7  8  9 10

19  6  1  2 11

18  5  4  3  12

17 16 15 14 13

解析:規律能看出來,問題就在於如何利用它。很明顯這個佇列是按順時針方向螺旋向外擴充套件的,我們可以把它看成一層一層往外延伸。第1層規定為中間的那個1,第2層為2到9,第三層為10到25,1、9、25.。。。。不就是平方數麼?而且是連續奇數的平方數,那麼可以推算第t層之內有(2*t-1)^2個數,給定座標(x,y),如何知道該點處於第幾層?層數t=max(|x|,|y|)。

#include#includeusing namespace std;

#define max(x,y) ((x)>=(y)?(x):(y))

int foo(int x,int y)

int main()

}int main()

{ fun(num);

for(int i=0;i

螺旋佇列問題

下面是乙個螺旋佇列 73 74 75 76 77 78 79 80 8172 43 44 45 46 47 48 4950 71 42 21 22 23 24 2526 51 70 41 20 7 8 910 27 52 69 40 19 6 1 2 11 28 53 68 39 18 5 4 3 ...

螺旋佇列問題解法

看到這個怪圖了嗎?對,就是螺旋佇列!看清以上數字排列的規律,設 1 點的座標是 0,0 x 方向向右為正,y 方向向下為正。例如,7 的座標為 1,1 2 的座標為 1,0 3 的座標為 1,1 程式設計實現輸入任意一點座標 x,y 輸出所對應的數字。finland 某著名通訊裝置公司 2005 年...

螺旋佇列問題之c語言

下面是乙個螺旋佇列 73 74 75 76 77 78 79 80 8172 43 44 45 46 47 48 4950 71 42 21 22 23 24 2526 51 70 41 20 7 8 910 27 52 69 40 19 6 1 2 11 28 53 68 39 18 5 4 3 ...