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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

走出迷宫(信息学奥赛一本通-T1254)

發(fā)布時間:2025/3/17 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 走出迷宫(信息学奥赛一本通-T1254) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

【題目描述】

當(dāng)你站在一個迷宮里的時候,往往會被錯綜復(fù)雜的道路弄得失去方向感,如果你能得到迷宮地圖,事情就會變得非常簡單。

假設(shè)你已經(jīng)得到了一個n*m的迷宮的圖紙,請你找出從起點到出口的最短路。

【輸入】

第一行是兩個整數(shù)n和m(1≤n,m≤100),表示迷宮的行數(shù)和列數(shù)。

接下來n行,每行一個長為m的字符串,表示整個迷宮的布局。字符‘.’表示空地,‘#’表示墻,‘S’表示起點,‘T’表示出口。

【輸出】

輸出從起點到出口最少需要走的步數(shù)。

【輸入樣例】

3 3
S#T
.#.
...

【輸出樣例】

6

【源程序】

#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<string> #include<cstdlib> #include<queue> #include<vector> #define INF 0x3f3f3f3f #define PI acos(-1.0) #define N 101 #define MOD 2520 #define E 1e-12 using namespace std; int r,c; char a[N][N]; bool vis[N][N]; int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}}; struct node {int x;int y;int step; }q[N*100]; void bfs(int sx,int sy,int ex,int ey) {int head=1,tail=1;memset(vis,0,sizeof(vis));vis[sx][sy]=1;q[tail].x=sx;q[tail].y=sy;q[tail].step=0;tail++;while(head<tail){int x=q[head].x;int y=q[head].y;int step=q[head].step;if(x==ex&&y==ey){printf("%d\n",step);break;}for(int i=0;i<4;i++){int nx=x+dir[i][0];int ny=y+dir[i][1];if(nx>=0&&nx<r&&ny>=0&&ny<c&&vis[nx][ny]==0&&a[nx][ny]=='.'){vis[nx][ny]=1;q[tail].x=nx;q[tail].y=ny;q[tail].step=step+1;tail++;}}head++;} } int main() {int start_x,start_y,end_x,end_y;scanf("%d%d",&r,&c);for(int i=0;i<r;i++)scanf("%s",a[i]);for(int i=0;i<r;i++)for(int j=0;j<c;j++){if(a[i][j]=='S'){start_x=i;start_y=j;}if(a[i][j]=='T'){end_x=i;end_y=j;a[i][j]='.';}}bfs(start_x,start_y,end_x,end_y);return 0; }

?

總結(jié)

以上是生活随笔為你收集整理的走出迷宫(信息学奥赛一本通-T1254)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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