基礎題 蛇形填數

2022-04-05 17:12:46 字數 1095 閱讀 4263

在n*n方陳裡填入1,2,...,n*n,要求填成蛇形。例如n=4時方陳為:

10 11 12 1

9 16 13 2

8 15 14 3

7 6 5 4

直接輸入方陣的維數,即n的值。(n<=100)

輸出結果是蛇形方陳。

3
7 8 1

6 9 2

5 4 3

先說一下我的思路,

我把n=4時的情況列了出來,發現了奇數時,j變化,偶數時,i變化等變化規律,後來我發現需要總結很多變化規律才能算數來,總結出了n=4的,n=5時又不一樣了,哎,頭疼(小白的思路。。)

大神們的思路:

①這是個4連通問題。

針對每個方陣中的格仔,與它四連通相鄰的格仔有4個:左右和上下;

要想訪問它們有四個方向:向下y座標加1,縱座標加0,記為(0,1),順時針是向左(-1,0),然後是(0,-1),最後是(1,0);可用乙個方向陣列儲存這四個方向,切換時按順序選取。

陣列開設好,填充為0值;

種子格仔為陣列右上方元素填入第乙個計數1,下面第一方向為(0,1),按照這個方向如果發現新格仔在陣列座標內且其值為0,則進行填充,再按照方向繼續填充;

如果發現上面條件不滿足換第二個方向(-1,0)繼續填充;

直到當前格仔的四個方向均不滿足填充條件時結束。

這樣得到的就是所謂蛇形填數的結果,而且與方陣尺寸無關。

②這個方法比較容易理解而且也簡單不過只能對這個題:

陣列開設好,填充0,遍歷先右下,再左,再左上,再右。遍歷過的設為1,即能實現蛇形遍歷。

核心**:

while (valn)  

完整**如下:

#include #include 

#define maxn 10

inta[maxn][maxn];

intmain()

for (x=0; xx)

printf("\n

");

} return

0;

}

蛇形填數和蛇形取數(基礎模擬練習)

1 2 問題 輸入矩陣的規模n,先將數按照下,右,上,左的順序填入矩陣,再按照這樣的順序取出。3解題思路 模擬,按照筆的順序存入取出,注意初始化的時候一定將矩陣全部初始化。4 5 include6 include7 const int n 1001 8 inta n n b n n 9int mai...

C 蛇形填數

蛇形填數 問題描述 在n n方陳裡填入1,2,n n,要求填成蛇形。例如n 4時方陳為 10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4 輸入直接輸入方陳的維數,即n的值。n 100 輸出輸出結果是蛇形方陳。問題分析 我們定義乙個二維陣列,開始x 0,y n 1,即第一行...

NYoj 蛇形填數

描述 在n n方陳裡填入1,2,n n,要求填成蛇形。例如n 4時方陳為 10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4 輸入 直接輸入方陳的維數,即n的值。n 100 輸出輸出結果是蛇形方陳。樣例輸入 3 樣例輸出 7 8 1 6 9 2 5 4 3 include ...