AT1350 深さ優先探索(洛谷 深度优先搜索+记忆化)
高橋先生住的小區(qū)是長方形的,被劃分成一個(gè)個(gè)格子。高橋先生想從家里去魚店,高橋先生每次可以走到他前后左右四個(gè)格子中的其中一個(gè),但不能斜著走,也不能走出小區(qū)。
現(xiàn)在給出地圖:
s:代表高橋先生的家
g:代表魚店
.:代表道路
#:代表墻壁
高橋先生不能穿過墻壁。
輸入:第一行輸入n(1<=n<=500),m(1<=m<=500)代表小區(qū)的長和寬,接下來n行每行m個(gè)字符,描述小區(qū)中的每個(gè)格子。
輸出:如果高橋先生能到達(dá)魚店,輸出"Yes",否則輸出"No"。
輸入輸出樣例 輸入 #1
復(fù)制
4 5
s####
…#
#…g 輸出 #1
復(fù)制
No輸入 #2
復(fù)制
4 4
…s
…
…
.g… 輸出 #2
復(fù)制
Yes輸入 #3
復(fù)制
10 10
s…
#########.
#…#.
#…####.#.
##…#.#.
#####.#.#.
g.#.#.#.#.
#.#.#.#.#.
###.#.#.#.
#…#… 輸出 #3
復(fù)制
No輸入 #4
復(fù)制
10 10
s…
#########.
#…#.
#…####.#.
##…#.#.
#####.#.#.
g.#.#.#.#.
#.#.#.#.#.
#.#.#.#.#.
#…#… 輸出 #4
復(fù)制
Yes輸入 #5
復(fù)制
1 10
s…####…g 輸出 #5
復(fù)制
No
思路:其實(shí)這道題目是簡單到不能簡單的一道深搜題目。但是我一開始的想法是需要回溯的,但是回溯做的話,是會超時(shí)的。如果當(dāng)前狀態(tài)走過了,但是無法走到終點(diǎn),按照之前的做法就取消標(biāo)記,然后下次從別的點(diǎn)走到這個(gè)點(diǎn)的時(shí)候,結(jié)果仍然是走不到。那么我們就不取消標(biāo)記了,如果某一個(gè)狀態(tài)可以直接走到終點(diǎn),就直接返回,如果走不到終點(diǎn),仍然不取消標(biāo)記,別的點(diǎn)走到這一個(gè)點(diǎn)的時(shí)候,就會知道這個(gè)點(diǎn)無法走到終點(diǎn)。這一操作類似于記憶化的操作。
代碼如下:
ps:本題用bfs做更好。努力加油a啊
總結(jié)
以上是生活随笔為你收集整理的AT1350 深さ優先探索(洛谷 深度优先搜索+记忆化)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二套房贷利率是多少2022,基准利率上涨
- 下一篇: 美国希望特斯拉向竞争对手开放超级充电网络