[蓝桥杯][算法提高VIP]学霸的迷宫(bfs+dfs)
題目描述
學霸搶走了大家的作業(yè),班長為了幫同學們找回作業(yè),決定去找學霸決斗。但學霸為了不要別人打擾,住在一個城堡里,城堡外面是一個二維的格子迷宮,要進城堡必須得先通過迷宮。因為班長還有妹子要陪,磨刀不誤砍柴功,他為了節(jié)約時間,從線人那里搞到了迷宮的地圖,準備提前計算最短的路線。可是他現(xiàn)在正向妹子解釋這件事情,于是就委托你幫他找一條最短的路線。
輸入
第一行兩個整數(shù)n, m,為迷宮的長寬。
接下來n行,每行m個數(shù),數(shù)之間沒有間隔,為0或1中的一個。0表示這個格子可以通過,1表示不可以。假設你現(xiàn)在已經(jīng)在迷宮坐標(1,1)的地方,即左上角,迷宮的出口在(n,m)。每次移動時只能向上下左右4個方向移動到另外一個可以通過的格子里,每次移動算一步。數(shù)據(jù)保證(1,1),(n,m)可以通過。
輸出
第一行一個數(shù)為需要的最少步數(shù)K。
第二行K個字符,每個字符∈{U,D,L,R},分別表示上下左右。如果有多條長度相同的最短路徑,選擇在此表示方法下字典序最小的一個。
樣例輸入
3 3
001
100
110
樣例輸出
4
RDRD
提示
有20%的數(shù)據(jù)滿足:1<=n,m<=10
有50%的數(shù)據(jù)滿足:1<=n,m<=50
有100%的數(shù)據(jù)滿足:1<=n,m<=500
思路:其實單純的bfs就可以了,這個題目跟19年省賽填空壓軸題一樣。當時一哥們說,怕用bfs會內存超限。因此我試了試dfs。bfs找出最短路徑之后,記錄下來路徑。然后dfs再回去找路徑。
代碼如下:
努力加油a啊,(o)/~
總結
以上是生活随笔為你收集整理的[蓝桥杯][算法提高VIP]学霸的迷宫(bfs+dfs)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 迷宫(BFS)
- 下一篇: B. Bogosort codefo