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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

迷宫绕行(BFS)

發布時間:2024/9/3 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 迷宫绕行(BFS) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1767: 迷宮繞行
時間限制: 1 Sec 內存限制: 128 MB
題目描述
給定一個m × n (m行, n列)的迷宮,迷宮中有兩個位置,魚頸肥想從迷宮的一個位置走到另外一個位置,當然迷宮中有些地方是空地,魚頸肥可以穿越,有些地方是障礙,她必須繞行,從迷宮的一個位置,只能走到與它相鄰的4個位置中,當然在行走過程中,魚頸肥不能走到迷宮外面去。令人頭痛的是,魚頸肥是個沒什么方向感的人,因此,她在行走過程中,不能轉太多彎了,否則她會暈倒的。我們假定給定的兩個位置都是空地,初始時,魚頸肥所面向的方向未定,她可以選擇4個方向的任何一個出發,而不算成一次轉彎。魚頸肥能從一個位置走到另外一個位置嗎?

輸入
第1行為一個整數t(1≤t≤100),表示測試數據的個數,接下來為t組測數據,

每組第1行為兩個整數m,n(1≤m,n ≤100),表示該位置為障礙,輸入數據中只有這兩種字符,

每組測試數據的最后一行為5個整數K,X 1,Y 1,X 2,Y 2(1≤ ? ≤10,1≤X 1,X 2 ≤N,1個≤Y 1,Y 2 ≤m),

其中?表示魚頸肥最多能轉的彎數,(X 1,Y 1),(X 2,Y 2)表示兩個位置,其中X 1,X 2對應列,Y 1,Y 2 對應行

輸出
每組測試數據對應為一行,若凱萊能從一個位置走到另外一個位置,輸出“是”,否則輸出“不”。

樣例輸入

2 5 5 ...** *.**. ..... ..... *.... 1 1 1 1 3 5 5 ...** *.**. ..... ..... *.... 2 1 1 1 3

樣例輸出

no yes

提示

‘.’ 表示 空地 ‘*’ 表示障礙
來源
AC_code:

#include <iostream> #include <queue> using namespace std; char a[105][105]; bool vis[105][105]; int dx[]= {-1,1,0,0},dy[]= {0,0,-1,1}; int m,n; int k; struct data {int x;int y;int cnt;bool operator==(data &p){return x==p.x&&y==p.y;} }; bool check(int x,int y) {if(x>=1&&x<=m&&y>=1&&y<=n&&a[x][y]!='*')return true;return false; } data s,e; int BFS() {queue<data>q;s.cnt = -1;//這個一定要在放進隊列前q.push(s);vis[s.x][s.y] = true;//標記入隊while(!q.empty()){data t1 = q.front();if(t1==e&&t1.cnt<=k){return 1;}q.pop();for(int i = 0; i < 4; i++){data t2;t2.x = t1.x + dx[i];t2.y = t1.y + dy[i];while(check(t2.x,t2.y))//朝一個方向走{if(!vis[t2.x][t2.y])//入過隊的不再入隊{t2.cnt = t1.cnt + 1;//一定要在入隊之前!!vis[t2.x][t2.y] = true;q.push(t2);}//入過隊的也可以直接穿過data t3;t3.x = t2.x + dx[i];t3.y = t2.y + dy[i];t2 = t3;}}}return 0; } int main() {int t;cin>>t;while(t--){cin>>m>>n;for(int i = 1; i <= m; i++){cin>>a[i]+1;for(int j = 1; j <= n; j++){vis[i][j] = false;}}cin>>k>>s.y>>s.x>>e.y>>e.x;if(BFS())cout<<"yes"<<endl;elsecout<<"no"<<endl;}return 0; }

總結

以上是生活随笔為你收集整理的迷宫绕行(BFS)的全部內容,希望文章能夠幫你解決所遇到的問題。

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