首页 > 其他 > 详细

广度优先收索(迷宫)

时间:2020-10-16 23:28:04      阅读:40      评论:0      收藏:0      [点我收藏+]
#include <iostream>
#include <queue>
using namespace std;
struct n
{
    int a,b;
};
queue<n>k;
int m[100][100],b[100][100];
int main(){
    int a,c,sx,sy,ex,ey;
    cin>>a>>c;
    for(int i=1;i<=a;i++){
        for(int j=1;j<=c;j++){
            char tmp;cin>>tmp;
            if(tmp==X){
                m[i][j]=0;
            }
            if(tmp==.){
                m[i][j]=1;
            }
            if(tmp==S){
                m[i][j]=1;
                sx=i;sy=j;
            }
            if(tmp==T){
                m[i][j]=1;
                ex=i;ey=j;
            }
        }
    }
    n now,tmp;
    int cnt=0;
    now.a=sx,now.b=sy,b[sx][sy]=0,k.push(now);
    int aa[4][2]={{-1,0},{1,0},{0,1},{0,-1}};
    while(k.size()!=0){
        now=k.front();
        k.pop();
        if(now.a==ex && now.b==ey){
            cout<<b[now.a][now.b]+1;
            return 0;
        }
        for(int i=0;i<4;i++){
            if(m[now.a+aa[i][0]][now.b+aa[i][1]] && b[now.a+aa[i][0]][now.b+aa[i][1]]==0){
                tmp.a=now.a+aa[i][0];
                tmp.b=now.b+aa[i][1];
                b[now.a+aa[i][0]][now.b+aa[i][1]]=b[now.a][now.b]+1;
                k.push(tmp);
            }
        }
    }
    cout<<0;
}

 

广度优先收索(迷宫)

原文:https://www.cnblogs.com/mooling/p/guangdumap.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!