題目連結:
題目大意:
輸入第一列給定六正整數 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]。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。