首页 > 其他分享 >AC.844 走迷宫

AC.844 走迷宫

时间:2023-03-11 11:14:43浏览次数:35  
标签:int 迷宫 ++ front AC.844 数组 pair include

 

#include<iostream>
#include<queue>
#include<utility>//pair容器的头文件
#include<cstring>//memset
using namespace std;
const int N = 1e2+7;
int n,m;
int g[N][N],d[N][N];//g数组用来存储迷宫地图,d数组用来存储每个位置到起点的距离
queue <pair<int,int>> q;
int bfs()
{
    int dx[]={-1,0,1,0},dy[]={0,1,0,-1};//定义方向数组
    memset(d,-1,sizeof(d));//把d数组的全部元素初始化为-1,用于标记未被访问过的坐标 
    d[0][0]=0;//起点到起点的距离为0
    q.push({0,0});//知道d[横坐标][纵坐标]的值后,就将此点纳入讨论范畴(讨论它的上下左右),此处是对起点进行如此操作,后续所有点都是这样:先知其距离,再论其邻居
    while (!q.empty())
    {
        auto t=q.front();//t其实是个pair
        //也可以这么写 pair<int,int> t= q.front();
        q.pop();//形象化描述:q.front()交给临时变量后(登个记)就可以放心走了
        for (int i = 0; i < 4; i++)
        {
            int x=t.first+dx[i],y=t.second+dy[i];
            if (x>=0 && x<n && y>=0 && y<m && g[x][y]!=1 && d[x][y]==-1)
            {
                d[x][y]=d[t.first][t.second]+1;
                q.push({x,y});
            }
            
        }
        
    }
    return d[n-1][m-1];
}
int main()
{
    cin>>n>>m;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            scanf("%d",&g[i][j]);
        }
    }
    cout<<bfs()<<endl;
    return 0;
}

 

标签:int,迷宫,++,front,AC.844,数组,pair,include
From: https://www.cnblogs.com/shinnyblue/p/17205475.html

相关文章

  • P2489 [SDOI2011]迷宫探险 题解
    题意简述:一个\(n\timesm\)的带墙体单入口多出口迷宫中有\(k\)个陷阱,陷阱分为有害或无害,有害会使人掉血,给出所有垃圾的有害与无害的所有排列组成的概率,给定人的血量,求......
  • 迷宫
    迷宫题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。下图给出了一个迷宫的平面图,其中标记为1的为障碍,标记为0的为可以通行的地方。......
  • 蓝桥杯2022年第十三届省赛真题-回忆迷宫 (暴力加深搜)
    题目描述爱丽丝刚从一处地下迷宫中探险归来,你能根据她对于自己行动路径的回忆,帮她画出迷宫地图吗? 迷宫地图是基于二维网格的。爱丽丝会告诉你一系列她在迷宫中的......
  • 迷宫
    迷宫题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。下图给出了一个迷宫的平面图,其中标记为1的为障碍,标记为0的为可以通行的地方。......
  • Go实现迷宫搜索
    packagemainimport("fmt""os")funccreateMaze(filenamestring)[][]int{file,err:=os.Open(filename)iferr!=nil{fmt.Println("......
  • C游戏 简单迷宫游戏开发
    #include<stdio.h>#definerow6#definecol6voidprintMap(charmap[row][col]){for(inti=0;i<row;i++){for(intj=0;j<col;j++){......
  • 迷宫问题
    StackMethod优点:代码简单缺点:不一定是最短路径自己写的maze=[[1,1,1,1,1,1,1,1,1,1],[1,0,1,0,0,1,1,1,0,1],[1,0,0,0,1,1,......
  • 数据结构-小球走迷宫问题(递归算法)
    迷宫样式packagecom.recursion;publicclassMaze{publicstaticvoidmain(String[]args){int[][]map=newint[8][7];for(inti=0......
  • 1210.minimum-moves-to-reach-target-with-rotations 穿过迷宫的最少移动次数
    问题描述1210.穿过迷宫的最少移动次数解题思路广度优先搜索可以用(x,y,state)来表示贪吃蛇当前所处的位置,x为蛇尾的横坐标,y为蛇尾的纵坐标,state表示蛇当前处于水平还......
  • 走迷宫
    有bug#include<iostream>usingnamespacestd;intdx[4]={0,0,1,-1},dy[4]={1,-1,0,0};intstartx,starty,endx,endy,w,l;charpuzzle[10][10];//最多支持10*10迷......