啊哈迷宫bfs解决方法

来源:互联网 发布:阿里云系统看电视 编辑:程序博客网 时间:2024/06/06 04:14
代码如下,忘记的时候回看啊哈算法bfs,感觉学了dfs看bfs轻松了很多
<span style="font-size:14px;">#include <iostream>#include <cstring>using namespace std;struct node{    int x;    int y;    int s;};struct node que[2501];int n,m,startx,starty,x,y,count_;int map[51][51];int visit[51][51];int next_[4][2]={{0,1},{1,0},{0,-1},{-1,0}};int main(){    int i,j,head=1,tail=1,flag=0,tx,ty;    cin>>n>>m;    for(i=1;i<=n;i++)    {        for(j=1;j<=m;j++)        {            cin>>map[i][j];        }    }    cin>>startx>>starty>>x>>y;    memset(visit, 0, sizeof(visit));    que[tail].x=startx;    que[tail].y=starty;    que[tail].s=0;    tail++;    visit[startx][starty]=1;    while(head<tail)    {        for(i=0;i<4;i++)        {      /**/      tx=que[head].x+next_[i][0];            ty=que[head].y+next_[i][1];            if(tx<1 || tx >n || ty<1 || ty>m)                continue;            if(map[tx][ty]==0 && visit[tx][ty]==0)            {       /**/         visit[tx][ty]=1;                que[tail].x=tx;                que[tail].y=ty;                que[tail].s=que[head].s+1;                tail++;            }            if(tx==x && ty==y)            {                flag=1;                break;                            }        }        if(flag==1)        {            break;        }        head++;    }    cout<<que[tail-1].s;    return 0;    }</span>

0 0
原创粉丝点击