0分求调,(本地测试无误
查看原帖
0分求调,(本地测试无误
1516438
lg3406286420楼主2024/11/1 15:52
#include<stdio.h>

#include<string.h>

int n,sx,sy,fx,fy,dx[]={0,0,1,-1},dy[]={1,-1,0,0},count=0,build,x,y;
int map[1001][1001],q[100001][2],f=0,r=1;
char smap[1001][1001];
int visited[1001][1001];

int bfs(int sx,int sy){ 

	q[0][0]=sx;q[0][1]=sy;
	visited[sy][sx]=1;
	while(f<r){
		if(q[f][0]==fx&&q[f][1]==fy) return f;
		for(int i=0;i<4;i++){
			x=q[f][0]+dx[i];y=q[f][1]+dy[i];
			if(x>=0&&x<n&&y>=0&&y<n&&map[y][x]==0&&!visited[y][x]){
				visited[y][x]=1;q[r][0]=x;q[r][1]=y;r++;
			}
		}
		f++;
	}
}

int main(){

	memset(visited,0,sizeof(visited));
	scanf("%d",&n);
	for(int i=0;i<n;i++){
			scanf("%s",&smap[i]);
		}
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			map[i][j]=smap[i][j]-'0';
		}
	}
	scanf("%d %d %d %d",&sx,&sy,&fx,&fy);
	sx--;sy--;fx--;fy--;
	count=bfs(sx,sy);
	printf("%d",count);
	return 0;
}
2024/11/1 15:52
加载中...