码迷,mamicode.com
首页 > 其他好文 > 详细

1254:走出迷宫

时间:2019-04-27 21:32:39      阅读:381      评论:0      收藏:0      [点我收藏+]

标签:using   print   name   div   min   har   names   通过   namespace   

1254:走出迷宫


时间限制: 1000 ms         内存限制: 65536 KB
提交数: 2605     通过数: 1202 

【题目描述】

当你站在一个迷宫里的时候,往往会被错综复杂的道路弄得失去方向感,如果你能得到迷宫地图,事情就会变得非常简单。

假设你已经得到了一个n*m的迷宫的图纸,请你找出从起点到出口的最短路。

 

【输入】

第一行是两个整数n和m(1≤n,m≤100),表示迷宫的行数和列数。

接下来n行,每行一个长为m的字符串,表示整个迷宫的布局。字符‘.’表示空地,‘#’表示墙,‘S’表示起点,‘T’表示出口。

 

【输出】

输出从起点到出口最少需要走的步数。

【输入样例】

3 3
S#T
.#.
...

【输出样例】

6

【来源】

一本通

 

     这道题目用BFS做。

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<queue>     //队列 
 4 using namespace std;
 5 int next[4][2]={{1,0},{-1,0},{0,-1},{0,1}};   //控制方向 
 6 int n,m,i,j,ex,ey,sx,sy,minn=999999;
 7 char s[500][500];              //迷宫 
 8 struct node{
 9     int x,y,stop;
10 };
11 int bfs(int a,int b)
12 {
13     queue<node>q;int k;
14     node q1;
15     q1.x=a;
16     q1.y=b;
17     q1.stop=0;
18     q.push(q1);
19     while(!q.empty())
20     {
21         node q2=q.front();
22         for(k=0;k<4;k++)
23         {
24             int xx=q2.x+next[k][0];
25             int yy=q2.y+next[k][1];
26             if(xx>=0&&xx<n&&yy>=0&&yy<m&&s[xx][yy]!=#)
27             {
28                 node q3;s[xx][yy]=#;
29                 q3.x=xx;q3.y=yy;q3.stop=q2.stop+1;
30                 if(xx==ex&&yy==ey)
31                 {
32                     if(q3.stop<minn)
33                     minn=q3.stop;
34                 }
35                 else
36                 {
37                     
38                     q.push(q3);
39                 }
40             }
41         }
42         q.pop();
43     }
44 }
45 int main()
46 {
47     scanf("%d%d",&n,&m);
48     for(i=0;i<n;i++)
49     scanf("%s",s[i]);
50     for(i=0;i<n;i++)
51     for(j=0;j<m;j++)
52     {
53         if(s[i][j]==S)
54         {
55             sx=i;sy=j;
56             s[i][j]==.;
57         }
58         if(s[i][j]==T)
59         {
60             ex=i;ey=j;
61             s[i][j]==.;
62         }
63     }
64     bfs(sx,sy);
65     printf("%d",minn);
66     return 0;
67 }

 

1254:走出迷宫

标签:using   print   name   div   min   har   names   通过   namespace   

原文地址:https://www.cnblogs.com/fuxiqi/p/10780289.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!