61 螺旋方陣 狀態機實現

2021-10-04 11:11:35 字數 2083 閱讀 1337

61 螺旋方陣

問題描述 :

明明在上學的時候,參加數學興趣班。在班上,老師介紹了一種非常有趣的方陣,稱之為螺旋方陣。該方陣一共由n×n個正整數構成(我們稱之為n階螺旋方陣),即共有n行n列。

方陣中的數字從1開始遞增,數字的排序規則是從左上角出發由1開始排序,並按順時針方向旋進,即先排最外面的一圈,然後排裡面的一圈,以此類推,直到排到最後乙個數為止。

例如乙個4階的螺旋方陣,一共有4×4=16個正整數構成,數字從1遞增到16,最後排出來的方陣如下:

1 2 3 4

12 13 14 5

11 16 15 6

10 9 8 7

明明回家後想自己動手構造這樣的螺旋方陣。他從n=1開始構造,但是他發現當n越來越大時,螺旋方陣的複雜性就越高,然後構造出來的方陣就越容易出錯。為了降低構造方陣的出錯率,提高構造速度,明明就求助於你,請你幫他寫乙個程式,來構造螺旋方陣。 明明的問題可以歸結為:給你乙個正整數n,請你按題目描述中所述的方法,構造出n階的螺旋方陣。

輸入說明 :

你寫的程式要求從標準輸入裝置中讀入測試資料作為你所寫程式的輸入資料。標準輸入裝置中有多組測試資料,每組測試資料僅佔一行,每行僅有乙個正整數n(1≤n≤10),即所要構造的螺旋方陣的階數。每組測試資料與其後一組測試資料之間沒有任何空行,第一組測試資料前面以及最後一組測試資料後面也都沒有任何空行。

輸出說明 :

對於每一組測試資料,你寫的程式要求計算出一組相應的運算結果,並將這一組運算結果作為你所寫程式的輸出資料依次寫入到標準輸出裝置中。每組運算結果為乙個n階的螺旋方陣,方陣中的數字用乙個空格隔開,具體形式請參考輸出樣例。每組運算結果與其後一組運算結果之間有乙個空行,最後一組運算結果之後沒有空行。 注:通常,顯示屏為標準輸出裝置。

輸入範例 :94

輸出範例 :

1 2 3 4 5 6 7 8 9

1 2 3 4 5 6 7 8 9

32 33 34 35 36 37 38 39 10

31 56 57 58 59 60 61 40 11

30 55 72 73 74 75 62 41 12

29 54 71 80 81 76 63 42 13

28 53 70 79 78 77 64 43 14

27 52 69 68 67 66 65 44 15

26 51 50 49 48 47 46 45 16

25 24 23 22 21 20 19 18 17

1 2 3 4

12 13 14 5

11 16 15 6

10 9 8 7

#include

#include

#define max 20

intmain()

memset

(a,0

,sizeof

(a))

; a[0]

[0]=

1;status=

'r';

x=0;

y=0;

i=2;

while

(i<=n*n)

else

break

;case

'd'://↓

if(x==n-

1||a[x+1]

[y]!=0)

else

break

;case

'l'://←

if(y==

0||a[x]

[y-1]!=

0)else

break

;case

'u'://↑

if(x==

0||a[x-1]

[y]!=0)

else

break

;default

:break;}

i++;}

for(i=

0;i)else}}

flag=1;

}return0;

}

高階61 螺旋方陣

61 螺旋方陣 問題描述 明明在上學的時候,參加數學興趣班。在班上,老師介紹了一種非常有趣的方陣,稱之為螺旋方陣。該方陣一共由n n個正整數構成 我們稱之為n階螺旋方陣 即共有n行n列。方陣中的數字從1開始遞增,數字的排序規則是從左上角出發由1開始排序,並按順時針方向旋進,即先排最外面的一圈,然後排...

高階題61 螺旋方陣

61 螺旋方陣 問題描述 明明在上學的時候,參加數學興趣班。在班上,老師介紹了一種非常有趣的方陣,稱之為螺旋方陣。該方陣一共由n n個正整數構成 我們稱之為n階螺旋方陣 即共有n行n列。方陣中的數字從1開始遞增,數字的排序規則是從左上角出發由1開始排序,並按順時針方向旋進,即先排最外面的一圈,然後排...

狀態機 狀態機0

近半年都忙於做專案,沒有太多的時間去整理和總結在專案中用過的技術 個人還是覺得技術需要總結提煉和沉澱的,忙到沒時間去總結提公升其實不 是什麼好事,這次講下狀態機,在戰鬥型別的遊戲中角色有多種不同的狀態,而狀態的切換錯綜複雜,23種設計模式中有一種模式叫做狀態模式,不過 這種模式是把狀態切換條件放到各...