在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 16 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 ...