2018年5月21日 星期一

ITSA- Recursionc 001~050-[C_RU30-中] 迷宮問題

題目連結:https://e-tutor.itsa.org.tw/e-Tutor/mod/programming/view.php?a=15488

看不到內容請點這:
C++
https://hackmd.io/owAW7zoGTo66CZ2xG78V-A#%E8%BF%B7%E5%AE%AE%E5%95%8F%E9%A1%8C

Time Limit: 2 seconds
問題描述 :
一個 10x10 的迷宮(0~9),以右下角為出發點 (8,8) ,左上角為出口 (1,1) ,設計者以右上左下的順序來找尋出口, 1 表示牆壁, 0 表示可走的路,請輸入迷宮,並顯示路徑。
搜尋規則為:右→上→左→下。走過的路徑標示為G,在沒有遭遇無路可走的情況時不能在走標示G的路徑。
如發現無路可走時,退回上一步,並將此格標示為D,表示不得再走此格。
此時我們會發現,如退回到起點時,這表示這是一個沒有可行路徑的迷宮。
輸入說明 :
輸入一個 10x10 的迷宮,
1表示牆壁,0表示可走的路
1 1 1 1 1 1 1 1 1 1
1 0 0 1 1 1 1 1 0 1
1 1 0 1 1 1 1 1 0 1
1 1 0 0 0 0 0 0 0 1
1 1 1 0 0 1 1 1 0 1
1 1 1 0 0 0 1 1 0 1
1 1 1 0 1 0 0 0 0 1
1 1 1 0 1 1 1 0 0 1
1 1 1 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1
輸出說明 :
如成功輸出YES,否則輸出NO;下一行則輸出路徑結果,如:
YES
1 1 1 1 1 1 1 1 1 1
1 X G 1 1 1 1 1 D 1
1 1 G 1 1 1 1 1 D 1
1 1 G G G G G G 1
1 1 1 0 0 1 1 1 G 1
1 1 1 0 0 0 1 1 G 1
1 1 1 0 1 0 0 G G 1
1 1 1 0 1 1 1 G 1 1
1 1 1 0 0 0 0 G S 1
1 1 1 1 1 1 1 1 1 1
範例 :

輸入範例輸出範例
1 1 1 1 1 1 1 1 1 1
1 0 0 1 1 1 1 1 1 1
1 1 0 1 1 1 1 1 1 1
1 1 0 0 0 0 0 0 0 1
1 1 1 0 0 1 1 1 0 1
1 1 1 0 0 0 1 1 0 1
1 1 1 0 1 0 0 0 0 1
1 1 1 0 1 1 1 0 1 1
1 1 1 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1
YES
1 1 1 1 1 1 1 1 1 1
1 X G 1 1 1 1 1 1 1
1 1 G 1 1 1 1 1 1 1
1 1 G G G G G G D 1
1 1 1 0 0 1 1 1 G 1
1 1 1 0 0 0 1 1 G 1
1 1 1 0 1 0 0 G G 1
1 1 1 0 1 1 1 G 1 1
1 1 1 0 0 0 0 G S 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 0 0 1 1 1 1 1 1 1
1 1 0 1 1 1 1 1 1 1
1 1 0 1 0 0 0 0 0 1
1 1 1 0 1 1 1 1 0 1
1 1 1 0 1 0 1 1 0 1
1 1 1 0 1 0 0 0 0 1
1 1 1 1 1 1 1 0 1 1
1 1 1 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1
NO
1 1 1 1 1 1 1 1 1 1
1 X 0 1 1 1 1 1 1 1
1 1 0 1 1 1 1 1 1 1
1 1 0 1 D D D D D 1
1 1 1 0 1 1 1 1 D 1
1 1 1 0 1 D 1 1 D 1
1 1 1 0 1 D D D D 1
1 1 1 1 1 1 1 D 1 1
1 1 1 D D D D D S 1
1 1 1 1 1 1 1 1 1 1