1 条题解

  • 0
    @ 2025-9-9 23:54:53

    C++ :

    #include<stdio.h>
    #include<queue>
    using namespace std;
    struct node
    {
    	int x,y;
    };
    
    int main()
    {
    	int n;
    	while(scanf("%d",&n)!=EOF)
    	{
    		char a[1000][1000];
    		int bb[1000][1000];
    		getchar();
    		queue<node>q;
    		for (int i=0;i<n;i++)
    		{
    			scanf("%s",a[i]);
    			getchar();
    		}
    		node as,ab;
    		scanf("%d%d",&as.x,&as.y);
    		as.x--;as.y--;
    		scanf("%d%d",&ab.x,&ab.y);
    		ab.x--;ab.y--;
    		a[as.x][as.y]='1';
    		q.push(as);int all=0;
    		bb[as.x][as.y]=0;
    		while(!q.empty())
    		{
    			if (q.front().x==ab.x&&q.front().y==ab.y) {break;}
    			else 
    			{
    				node ww;
    				all=bb[q.front().x][q.front().y];
    				if (q.front().x-1>=0&&a[q.front().x-1][q.front().y]=='0')  {bb[q.front().x-1][q.front().y]=all+1;a[q.front().x-1][q.front().y]='1';ww.x=q.front().x-1;ww.y=q.front().y;q.push(ww);}
    				if (q.front().y-1>=0&&a[q.front().x][q.front().y-1]=='0')  {bb[q.front().x][q.front().y-1]=all+1;a[q.front().x][q.front().y-1]='1';ww.x=q.front().x;ww.y=q.front().y-1;q.push(ww);}
    				if (q.front().y+1<=n-1&&a[q.front().x][q.front().y+1]=='0')  {bb[q.front().x][q.front().y+1]=all+1;a[q.front().x][q.front().y+1]='1';ww.x=q.front().x;ww.y=q.front().y+1;q.push(ww);}
    				if (q.front().x+1<=n-1&&a[q.front().x+1][q.front().y]=='0')  {bb[q.front().x+1][q.front().y]=all+1;a[q.front().x+1][q.front().y]='1';ww.x=q.front().x+1;ww.y=q.front().y;q.push(ww);}
    			}
    			q.pop();
    		}
    		printf("%d\n",bb[ab.x][ab.y]);
    	}
    	return 0;
    }
    
    • 1

    信息

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