题解 | 迷宫寻路
迷宫寻路
https://www.nowcoder.com/practice/0c8930e517444d04b426e9703d483ed4
#include<stdio.h>
#include<string.h>
#define max 105
char str[max][max];//迷宫输入
int biaoji[max][max];//是否被标记,原谅为0,有后为1;
int x_0[max*max];
int y_0[max*max];
int to,wei;
void ff_wei(int x,int y){
x_0[wei]=x;
y_0[wei]=y;
wei++;
}
void ff_to(int *x,int *y){
*x=x_0[to];
*y=y_0[to];
to++;
}
int ff_return(){
return to==wei;
}
int main(){
int n,m;
scanf("%d%d",&n,&m);//n 行数m 列数
/*
1111
1111-->n=3,m=4;
1111
*/
for(int i=0;i<n;i++){
scanf("%s",str[i]);
}
memset(biaoji,0,sizeof(biaoji));
to=wei=0;
ff_wei(0,0);
biaoji[0][0]=1;
int dx[4] = {1, -1, 0, 0};
int dy[4] = {0, 0, 1, -1};
int found = 0;
while(!ff_return()){
int x,y;
ff_to(&x,&y);
if(x==n-1&&y==m-1){
found=1;
break;
}
for(int i=0;i<4;i++){
int nx=x+dx[i];
int ny=y+dy[i];
if(nx>=0&&ny>=0&&nx<n&&ny<m&&str[nx][ny]=='.'&&biaoji[nx][ny]!=1){
biaoji[nx][ny]=1;
ff_wei(nx,ny);
}
}
}
if(found==1){
printf("Yes");
}else {
printf("No");
}
}

查看6道真题和解析