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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

表白记 BFS求最短路径

發布時間:2024/10/6 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 表白记 BFS求最短路径 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

單身的1暗戀上了一個女生,于是想給她告白,于是就在房間里用蛋糕堆了一個心的形狀。

可是天公不作美,在這個房間的某個角落里藏著一只小老鼠,小老鼠虎視眈眈的看著這些蛋糕,想等1走之后去偷吃蛋糕。

一個房間可以看成n*n的方格。小老鼠可以往上、下、左、右四個方向走。問小老鼠吃到蛋糕最少需要多少步?

Input

本題有多組測試,每組測試第一行輸入三個正整數n,x,y。n代表房間的長寬,(x,y)代表老鼠洞的位置

(老鼠出現在老鼠洞這個點也算一步)。接下來n行是房間的布置, ’#’代表蛋糕,’.’代表空地。其中(x,y)一定滿足位于房間的邊上。

(7 ≤n ≤ 99,1 ≤ x,y ≤ n)

Output???

對于每組測試數據輸出一個整數,占一行。

Sample Input

11 1 8

...........
...........
...#...#...
..###.###..
.#########.
.#########.
..#######..
...#####...
....###....
.....#.....
...........
9 7 9
.........
.........
..##.##..
.#######.
.#######.
..#####..
...###...
....#....

.........

Sample Output

3

4

思路:

BFS求最短路模板題:

在一個二維平面內,有路和障礙物,已知起點和終點,求從起點到終點的最短路

#include<bits/stdc++.h> using namespace std; struct node {int x,y,step; }; int n,x,y; int ans; char mp[100][100]; bool vis[100][100]; int to[4][2]={1,0,-1,0,0,1,0,-1}; bool check(int x,int y) {if(x<0||y<0||x>=n||y>=n||vis[x][y])return 1;return 0; } void bfs() {node start,next;start.x=x;start.y=y;start.step=0;vis[x][y]=1;queue<node> q;q.push(start);while(!q.empty()){node temp=q.front();q.pop();vis[temp.x][temp.y]=1;if(mp[temp.x][temp.y]=='#'){ans=temp.step;return;}for(int i=0;i<4;i++){next=temp;next.x+=to[i][0];next.y+=to[i][1];if(check(next.x,next.y))continue;next.step++;vis[next.x][next.y]=1;q.push(next);}}ans=-1; } int main() {while(cin>>n>>x>>y){x--;y--;for(int i=0;i<n;i++)scanf("%s",mp[i]);fill(vis[0],vis[0]+100*100,0);bfs();cout<<ans+1<<endl;}return 0; }

總結

以上是生活随笔為你收集整理的表白记 BFS求最短路径的全部內容,希望文章能夠幫你解決所遇到的問題。

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