24 蛇形填數

2022-06-04 19:09:18 字數 1006 閱讀 1706

題目:

在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 <= 8。

思路:由題目可知,矩陣為方陣,因此用二維陣列儲存,同時將所有位置的值初始化為 0。

可將矩陣看成直角座標系,並設每個數字座標為(x , y),對應到二維陣列的下標上。

假設當前位置為 「筆」 的位置,開始時,「筆」 在最右上角,座標為(0 , n - 1) ,分析可得,「筆」 的移動軌跡為 先向下移動,再向左移動,再向上移動,再向右移動。整體上按照這4種方式,迴圈移動,必須注意,移動的先後次序不能顛倒。

舉例來說,「筆」 一開始在最右上角,先填寫數字,再向下移動,邊移動邊填寫數字。

那麼怎麼判斷該改變方向了呢?當向下移動時,先判斷是否越過邊界,再判斷下乙個位置是否被寫過(沒有被寫過的格仔值仍然是0, 被寫過的格仔值為數字),這樣依次判斷,直到 「筆」  應寫的值超過格仔數。

**:

#include 

using namespace std;

const int maxn = 20;

int matrix[maxn][maxn];

int main()

}pencil = matrix[x][y] = 1;

while (pencil < n * n)

while (y - 1 >= 0 && !matrix[x][y - 1])

while (x - 1 >= 0 && !matrix[x - 1][y])

while (y + 1 < n && !matrix[x][y + 1])

}for (int i = 0; i < n; ++i)

cout << endl;

}return 0;

}

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

acm 蛇形填數

時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 在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...