入门BFS求解
  • 板块灌水区
  • 楼主wangqz
  • 当前回复12
  • 已保存回复12
  • 发布时间2022/11/29 21:57
  • 上次更新2023/10/27 00:58:01
查看原帖
入门BFS求解
530676
wangqz楼主2022/11/29 21:57

题目

#include<iostream>
#include<cstdio>
using namespace std;
const int size = 1005;
int n;
int map[size][size];
int ox,oy;
int xx,yy;
int head=0,tail=1;
int dx[4]={0,1,0,-1},
	dy[4]={1,0,-1,0};
struct note
{
    int x,y;
	int foot;
}q[1000000];
int main() 
{
//    freopen("ice.in","r",stdin);
//    freopen("ice.out","w",stdout);
    
    cin>>n;
    for(int i=1;i<=n;i++) 
        for(int j=1;j<=n;j++) 
            scanf("%d",&map[i][j]);
        
    cin>>q[1].x>>q[1].y>>ox>>oy;
    q[1].foot=0;

    while(head<tail) 
	{
        head++;
        if(q[head].x==ox&&q[head].y==oy) 
		{
           	cout<<q[head].foot;
           	return 0;
        }
        for(int i=0;i<=3;i++) 
		{
        	xx=q[head].x,yy=q[head].y;
            while(map[xx+dx[i]][yy+dy[i]]==0) 
				xx+=dx[i],yy+=dy[i];
				
            if(q[head].x!=xx || q[head].y!=yy) 
			{
                tail++;
                q[tail].x=xx;
                q[tail].y=yy;
                q[tail].foot=q[head].foot+1;
            }
        }
    }
    cout<<"impossible";
    return 0;
}

萌新刚学BFS,求代码WA,RE的原因

2022/11/29 21:57
加载中...