1 条题解

  • 0
    @ 2024-12-24 9:50:56

    C++ :

    #include<iostream>
    using namespace std;
    int n,x1,x2,y1,y2,h=0,r=1;;
    char a[1001][1001];
    int b[1000000][4],c[1001][1001]={0};
    int dx[]={0,0,1,-1},dy[]={1,-1,0,0};
    void bfs();
    int main()
    {
    	cin>>n;
    	for(int i=1;i<=n;++i)
    	for(int j=1;j<=n;++j)
    	cin>>a[i][j];
    	cin>>x1>>y1>>x2>>y2;
    	bfs();
    	return 0;
    	
    }
    void bfs()
    {
    	int x,y;
    	b[1][1]=x1;
    	b[1][2]=y1;
    	b[1][3]=0;
    	c[x1][y1]=1;
    	while(h<r)
    	{
    		++h;
    		for(int i=0;i<4;++i)
    		{
    			x=b[h][1]+dx[i];
    			y=b[h][2]+dy[i];
    			if(x>0&&x<=n&&y>0&&y<=n&&!c[x][y]&&a[x][y]=='0')
    			{
    				c[x][y]=1;
    				++r;
    				b[r][1]=x;
    				b[r][2]=y;
    				b[r][3]=b[h][3]+1;
    			}
    			if(x==x2&&y==y2)
    			{
    				cout<<b[r][3];
    				return;
    			}
    		}
    	}
    }
    
    • 1

    信息

    ID
    1032
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者