题解 | 迷宫寻路

迷宫寻路

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");
}

}

全部评论

相关推荐

04-01 11:08
中原工学院 Java
老六f:感觉这种培训期过了就找理由给你开了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务