切換
舊版
前往
大廳
主題

ZeroJudge - e601: 00255 - Correct Move 解題心得

Not In My Back Yard | 2020-01-12 23:50:02 | 巴幣 0 | 人氣 246

題目連結:


題目大意:
給定一 8 × 8 棋盤的座標如下:
0 1 2 3 4 5 6 7
8 9 10 11 12 13 14 15
16 17 18 19 20 21 22 23
24 25 26 27 28 29 30 31
32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47
48 49 50 51 52 53 54 55
56 57 58 59 60 61 62 63

輸入有多筆測試資料,每筆佔一列。每列給定三非負整數,第一個數字代表國王在的位置、第二個數字代表皇后在的位置、第三個數字代表皇后要前進到的新座標。

而兩人位置在同一位置,稱作「Illegal state」;而國王的移動方向是上下左右四格,皇后是直線以及對角線任意格。如果皇后的新位置不符合皇后的移動模式,則是「Illegal move」;如果皇后移動路徑會經過國王或是會到達國王可以到達的地方,則稱作「Move not allowed」;如果皇后到達新位置後,國王的任何移動方式都會抵達皇后所能抵達的位置,則稱作「Stop」;如果以上皆非,則為「Continue」。

請判斷給定的國王皇后座標,是上述哪一種情況。



範例輸入:
17 17 49
17 49 56
17 49 9
17 49 17
17 49 25
17 49 33
17 49 41
17 49 49
56 48 49


範例輸出:
Illegal state
Illegal move
Illegal move
Illegal move
Move not allowed
Continue
Continue
Illegal move
Stop


解題思維:
「Illegal state」很直觀,就是先判斷兩者的座標有沒有相同。

「Illegal move」,則是要判斷皇后的新位置是不是在直線上、對角線上或是在原本自己的位置。在原本的位置算作「Illegal move」。

而國王會移動到的位置為原本的位置 + 1 、 - 1 、 + 8 、 - 8 (可以從座標圖觀察出),然後判斷皇后的新位置沒有移動到這些位置上且路徑沒有穿過國王(可以用座標去判斷國王有沒有介於皇后以及皇后新位置之間),這些情況稱作「Move not allowed」。

如果不是以上任何情況,則判斷國王有沒有在 0 、 7 、 56 、 63 且皇后對應分別在 9 、 14 、 49 、 54 的位置上。如果是,則是「Stop」;反之,「Continue」。

此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

相關創作

更多創作