zoukankan      html  css  js  c++  java
  • 【ybt1252】走迷宫

    (还是蛮经典的一道bfs)

    显然算法bfs

    【传送门】


    算法基本上算是bfs的模板了,(模板详见【新知识】队列&bfs【洛谷p1996约瑟夫问题&洛谷p1451求细胞数量】

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<queue>
    #include<cstring>
    using namespace std;
    int r,c;
    char a1[50];
    bool vis[50][50];//用来存储是否走过(显然第一遍走过时用的步数最小qwq)
    int a[50][50];//存map
    int dx[4]={1,0,-1,0};
    int dy[4]={0,1,0,-1};//每一步可以走的四个方向
    struct amazing{
        int x,y;
        int ans;
    };//结构体,ans存的是到达这一个点的最小步数qwq
    amazing fz(int x,int y,int z){
        amazing rtn;
        rtn.x=x;
        rtn.y=y;
        rtn.ans=z;
        return rtn;
    }//一个类似于构造函数的fz函数
    bool pan(int x,int y){
        return x>=1&&x<=r&&y>=1&&y<=c&&vis[x][y]==0&&a[x][y]==0;
    }//判断是否满足可以走的条件
    queue<amazing> q;
    int main(){
        scanf("%d%d",&r,&c);
        for(int i=1;i<=r;i++){
            scanf("%s",a1);
            for(int j=1;j<=c;j++){
                if(a1[j-1]=='.')
                a[i][j]=0;
                if(a1[j-1]=='#')
                a[i][j]=1;
            }//把地图构造成01型
        }
            q.push(fz(1,1,1));//把第一步也就是起点入队
        vis[1][1]=1;
        while(!q.empty()){//bfs模板
            amazing h=q.front();
            q.pop();
            for(int i=0;i<4;i++){
                int xx=h.x,yy=h.y,ans=h.ans;//这里之前踩过坑qwq,一定要定义在循环里这一句,要不然会炸
                if(pan(xx+dx[i],yy+dy[i])){
                    xx+=dx[i];
                    yy+=dy[i];
                    vis[xx][yy]=1;
                    q.push(fz(xx,yy,ans+1));//走出这一步,ans+1
                }
                if(xx==r&&yy==c){//判断到没到终点
                    cout<<ans+1<<endl;//因为要算头尾,所以到终点后应输出ans+1
                    return 0;
                }
                
            }
            
        }
        return 0;
    }

    end-

  • 相关阅读:
    搜索旋转排序数组
    SpringBoot整合mybatis
    《浪潮之巅》阅读笔记01
    阅读杂记01
    go home or stand up
    关于URL编码/javascript/js url 编码(轉)
    水晶报表 相关。
    Format函数(转)
    asp 亂碼問題。
    圣人不死,大盗不止
  • 原文地址:https://www.cnblogs.com/zhuier-xquan/p/10744713.html
Copyright © 2011-2022 走看看