a516: 螺旋矩陣
Tags :
Accepted rate : 28人/45人 ( 62% ) [非即時]
評分方式:
Tolerant

最近更新 : 2021-12-30 09:10

Content

一個n行n列的螺旋矩陣可由如下方法生成:
從矩陣的左上角(第1行第1列)出發,初始時向右移動;如果前方是未曾經過的格子,則繼續前進,否則右轉;重複上述操作直至經過矩陣中所有格子。根據經過順序,在格子中依次填入1, 2, 3, ... , n,便構成了一個螺旋矩陣。
下圖是一個n = 4 時的螺旋矩陣。
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
現給出矩陣大小n以及i和j,請你求出該矩陣中第i行第j列的數是多少。

Input

輸入共一行,包含三個整數 n,i,j,每兩個整數之間用一個空格隔開,分別表示矩陣大小、待求的數所在的行號和列號。

Output

輸出共一行,包含一個整數,表示相應矩陣中第i行第j列的數

Sample Input #1
4 2 3
Sample Output #1
14
測資資訊:
記憶體限制: 64 MB
不公開 測資點#0 (100%): 1.0s , <1K
Hint :

觀察一下規律,跟著數字增長的方向走,不難發現:

如果是第 1 行,那麼第 j 列的數字就是 j;

如果是第 n 列,那麼第 i 行的數字就是 n + i - 1;

後兩條規律有點難找,但是不要放棄,繼續觀察:

如果是第 n 行,那麼第 j 列的數字就是 3 × n − 2 − j + 1;

如果是第 1 列,那麼第 i 行的數字就是 4 × n − 4 − i + 2。

遞歸解法:把螺旋矩陣一層一層地剖開,看看目標位置在哪一層,然後加上這一層最左上角的數字(4 \times (n - 1)4×(n−1)),即為要求的數字。

Tags:
出處:
[管理者:
xllin@g.puic... (Emily Lin)
]


ID User Problem Subject Hit Post Date
沒有發現任何「解題報告」