日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[蓝桥杯][算法提高VIP]学霸的迷宫(bfs+dfs)

發(fā)布時間:2023/12/15 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [蓝桥杯][算法提高VIP]学霸的迷宫(bfs+dfs) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目描述
學霸搶走了大家的作業(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再回去找路徑。
代碼如下:

#include<bits/stdc++.h> #define ll long long using namespace std;const int maxx=5e2+10; struct node{int x,y;node(int a,int b){x=a,y=b;} }; int d[][2]={{1,0},{0,-1},{0,1},{-1,0}}; char rr[]={'D','L','R','U'}; char b[maxx][maxx]; int pre[maxx][maxx]; int vis[maxx][maxx]; int n,m;inline void bfs(int x,int y) {queue<node> q;q.push(node(x,y));vis[x][y]=1;while(q.size()){node a=q.front();q.pop();if(a.x==n&&a.y==m) break;for(int i=0;i<4;i++){int tx=a.x+d[i][0];int ty=a.y+d[i][1];if(tx<1||tx>n||ty<1||ty>m||b[tx][ty]=='1'||vis[tx][ty]) continue;vis[tx][ty]=1;pre[tx][ty]=i;q.push(node(tx,ty));}} } inline void dfs(int x,int y,string &s) {if(x==1&&y==1) return ;s=rr[pre[x][y]]+s;int tx=x-d[pre[x][y]][0];int ty=y-d[pre[x][y]][1];dfs(tx,ty,s); } int main() {scanf("%d%d",&n,&m);getchar();for(int i=1;i<=n;i++){for(int j=1;j<=m;j++) scanf("%c",&b[i][j]);getchar();}bfs(1,1);string s="";dfs(n,m,s);cout<<s.length()<<endl<<s<<endl;return 0; }

努力加油a啊,(o)/~

總結

以上是生活随笔為你收集整理的[蓝桥杯][算法提高VIP]学霸的迷宫(bfs+dfs)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。