前往
大廳
主題

ZeroJudge - f418: Word Search Puzzle 解題心得

Not In My Back Yard | 2021-05-29 00:00:05 | 巴幣 0 | 人氣 313

題目連結:


題目大意:
輸入第一列給定六正整數 h 、 w 、 r1 、 c1 、 r2 、 c2 (1 ≦ r1 ≦ r2 ≦ h ≦ 20 , 1 ≦ c1 ≦ c2 ≦ w ≦ 50),代表有一個字謎遊戲版面為 h 列 w 行。 r1 、 r2 為從上至下數的第幾列、c1 、 c2 為從左到右數的第幾行。

接下來有 h 列,每列給定 w 個大寫字母,代表字謎遊戲的版面。

一個字詞可以由左往右、由上往下、由左上至右下延伸,如下圖。

現在已經知道一個字詞的開頭 (r1, c1) 以及結尾 (r2, c2) ,試問該字詞的內容為何?



範例輸入:
範例輸入 #1
10 14 4 3 10 9
VBREEFISHRACHP
ANACROCODILEEB
AOSTRICHTEGRDA
IADDHCHEETAHGD
BHRODRAVENENEG
EYWDLSAMOLELHE
ARTPVPRCBOLROR
RHTOAAHCROWAGH
CCANNORIAZEBRA
HANYTAEKNINAWA

範例輸入 #2
3 4 1 1 3 1
ROAR
OINK
WOOF


範例輸出:
範例輸出 #1
DOLPHIN

範例輸出 #2
ROW


解題思維:
就是單純地將版面存成一個二維陣列 W,然後從 W[r1][c1] 輸出到 W[r2][c2] 而已,而我們的移動路徑只有以下三種:
當 r1 == r2 時,我們會依序經過 W[r1][c1] 、 W[r1][c1 + 1] 、 W[r1][c1 + 2] 、 …… 、 W[r1][c2];

當 c1 == c2 時,我們會依序經過 W[r1][c1] 、 W[r1 + 1][c1] 、 W[r1 + 2][c1] 、 …… 、 W[r2][c1];

其他狀況,則會經過 W[r1][c1] 、 W[r1 + 1][c1 + 1] 、 W[r1 + 2][c1 + 2] 、 …… 、 W[r2][c2]。




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

創作回應

更多創作