zoukankan      html  css  js  c++  java
  • codevs 1215 迷宫

    在N*N的迷宫内,“#”为墙,“.”为路,“s”为起点,“e”为终点,一共4个方向可以走。从左上角((0,0)“s”)位置处走到右下角((n-1,n-1)“e”)位置处,可以走通则输出YES,不可以走则输出NO。

    输入的第一行为一个整数m,表示迷宫的数量。  其后每个迷宫数据的第一行为一个整数n(n≤16),表示迷宫的边长,接下来的n行每行n个字符,字符之间没有空格分隔。

    输出有m行,每行对应的迷宫能走,则输出YES,否则输出NO。

    1  7  s...##.  .#.....  .......  ..#....  ..#...#  ###...#  ......e
    YES

    这道题灌水法即可,简单说就是DFS然后向四周拓展

    #include<stdio.h>
    #include<math.h>
    char a[1001][1001],ans=0;
    int directx[5]={0,0,0,-1,1},vis[1001][1001];
    int directy[5]={0,-1,1,0,0};
    void dfs(int i,int j,int n)
    {
        if(i<=0||i>n||j<=0||j>n)return ;
        if(vis[i][j]==1||a[i][j]=='#')return ;
        if(a[i][j]=='e'){ans=a[i][j];
        printf("YES");    
        }
        vis[i][j]=1;
        for(int x=1;x<=4;x++)
        dfs(i+directx[x],j+directy[x],n) ;
    }
    int main()
    {
        int b,i,z,o,j,n;
        scanf("%d",&z);
       for(o=1;o<=z;o++)
       {
           scanf("%d
    ",&n);
           for(i=1;i<=n;i++)
           for(j=1;j<=n;j++)
           {
               if(j<n)
               scanf("%c",&a[i][j]);
               else scanf("%c
    ",&a[i][j]);
           }
           dfs(1,1,n);
        if(ans==0)printf("NO");
           printf("
    ");
       }
    
          return 0;
    } 
  • 相关阅读:
    k8s之StatefulSet介绍(六)
    k8s之Deployment 声明式地升级应用(五)
    k8s 挂载卷介绍(四)
    k8s 之service资源介绍(三)
    k8s几种pod的控制器
    k8s 初识pod (二)
    k8s的常用命令(一)
    k8s 学习笔记
    aws centos系统磁盘扩容
    mac更改launchpad图标大小
  • 原文地址:https://www.cnblogs.com/z52527/p/3889200.html
Copyright © 2011-2022 走看看