• 板块灌水区
  • 楼主_YUZIhaizhao_
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/10/8 21:04
  • 上次更新2023/11/4 04:19:11
查看原帖
362325
_YUZIhaizhao_楼主2021/10/8 21:04

有没有大佬看看我这个代码哪里错了(广搜迷宫)

#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
int m,n,a[101][101],vis[101][101];
struct point
{
    int x,y,stemp;
}e[100001];
queue<point> q;
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
int main()
{
    scanf("%d%d",&m,&n);
    for(int i=1;i<=m;i++)
        for(int j=1;j<=n;j++)
            scanf("%d",&a[i][j]);
    point start;
    start.x=1;
    start.y=1;
    start.stemp=0;
    vis[1][1]=1;
    q.push(start);
    while(!q.empty())
    {
        int x=q.front().x,y=q.front().y;
        if(x==m&&y==n)
        {
            printf("%d",q.front().stemp);
            break;
        }
        for(int k=0;k<=3;k++)
        {
            int tx,ty;
            tx=x+dx[k];
            ty=y+dy[k];
            if(a[tx][ty]==0&&vis[tx][ty]==0)
            {
                point temp;
                temp.x=tx;
                temp.y=ty;
                temp.stemp=q.front().stemp+1;
                q.push(temp);
                vis[tx][ty]=1;
            }
        }
        q.pop();
    }
}
2021/10/8 21:04
加载中...