BFS(入门题--迷宫)
//這題之前用DFS寫過,現在再用它來寫BFS
1185: 走迷宮
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 435 Solved: 168
[Submit][Status][Web Board]
Description
給一張個迷宮,問能否從起點走到終點,只能往上下左右走,不能斜著走
Input
多組測試數據,每組第一行兩個正整數,分別為n和m
表示n這個迷宮有n行m列(0<n,m<10)
接著是n行m列,
'#'表示路
‘*’表示墻
‘S’表示起點
‘T’表示終點
Output
每組測試數據輸出一個結果,如果能從S走到T,輸出“YES”,否則輸出“NO”
Sample Input
2 2
S*
#T
3 3
S*#
#T
##
Sample Output
YES
NO
HINT
Source
/*
BFS,廣度優先搜索,類似于樹的層序遍歷。
所以,寫BFS的關鍵在于確定每一層的元素。
首先要確定起點,然后拿出起點來看一下是否為終點,如果是,則結束搜索。
如果不是,就以此點為擴展,擴展出與它相連的點并且沒有看過的點作為下一層的元素。。
每層的元素都可以擴展0個到多個元素作為下一層元素。然后一層一層一個一個拿出來看是不是終點。
從上述可以看出,先進先出,可以維護一個隊列。每次拿出一個元素來看是不是終點,不是的話就把它可以擴展出來的并且沒有訪問過的下一層元素加入到隊列中~,直到拿出來的是終點或者隊列已空
/
Ac_code:
/
本題應該注意:不能用%c一個一個字符讀入然后沒讀一行加getchar(),這樣寫提交會過不了,應該盡量避免使用getchar(),這里使用%s一行一行讀入就能AC
*/
總結
以上是生活随笔為你收集整理的BFS(入门题--迷宫)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中的类与对象(浅谈)
- 下一篇: 1176: 扫雷