你走過迷宮嗎?在一個複雜的地圖裡面,試圖摸索出走到出口的路線就是遊玩迷宮的目標。但你知道只要迷宮的結構夠簡單的話,是存在一套必勝法則的嗎?
這套必勝法則又被稱做「右手法則」,首先在進入地圖後,我們可以先把右手扶在牆上,接著只需要不斷地讓貼著牆壁行走,就會奇蹟似地抵達出口。
若要以程式的角度做解釋的話,我們可以假設迷宮是一張 $N\times M$ 的表格,其中起點在 $(1, 2)$、終點在 $(N, M - 1)$。玩家一開始從 $(1, 2)$ 進入後,面向的方向會是 $(+1, 0)$,並將右手扶在 $(1, 1)$ 的牆壁上。接著,不斷進行以下過程:
而根據當前的面向方向,右轉或左轉後面向的方向則是依據下列的關係圖:
$$
(+1, 0) \xrightleftharpoons[\text{左轉}]{\text{右轉}} (0, -1) \xrightleftharpoons[\text{左轉}]{\text{右轉}} (-1, 0) \xrightleftharpoons[\text{左轉}]{\text{右轉}} (0, +1) \xrightleftharpoons[\text{左轉}]{\text{右轉}} (+1, 0)
$$
現在,請你撰寫一支程式,在輸入迷宮地圖的長相後,輸出從起點 $(1, 2)$ 靠著右手法則走到終點 $(N, M - 1)$ 所需要的移動步數。請注意,左右轉並不算在步數內。
輸入首行有兩個正整數 $N, M$,代表迷宮的長與寬。
接下來 $N$ 行,每行一個長度為 $M$ 的字串,皆由字元 .
和 #
組成,其中我們以 .
當作空地、#
當作牆壁。
#
).
)輸出一個數字,代表使用右手法則從 $(1, 2)$ 走到 $(N, M - 1)$ 的所需步數。
No. | Testdata Range | Constraints | Score |
---|---|---|---|
1 | 0~1 | 範例測資 | 0 |
2 | 0~11 | 無額外限制 | 100 |