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

    1215 迷宫

     时间限制: 1 s
     空间限制: 128000 KB
     题目等级 : 黄金 Gold 
     
    题目描述 Description

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

    输入描述 Input Description

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

    输出描述 Output Description

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

    样例输入 Sample Input
    1 
    7
    s...##.
    .#.....
    .......
    ..#....
    ..#...#
    ###...#
    ......e
    样例输出 Sample Output
    YES

    思路:深搜。
     1 #include<iostream>
     2 #include<cstring>
     3 using namespace std;
     4 int map[20][20];
     5 int d[5]={0,1,0,-1,0};
     6 int n,m;
     7 char s;
     8 void dfs(int a,int b)
     9 {
    10     if(a==m&&b==m)return ;
    11     for(int i=0;i<4;++i)
    12     {
    13         int h=a+d[i];
    14         int z=b+d[i+1];
    15         if((h<=m)&&(h>0)&&(z>0)&&(z<=m)&&map[h][z]==0)
    16         {
    17             map[h][z]=1;
    18             dfs(h,z);
    19         }
    20     }
    21 }
    22 int main()
    23 {
    24     cin>>n;
    25     while(n--)
    26     {
    27         memset(map,0,sizeof(map));
    28         cin>>m;
    29         for(int i=1;i<=m;++i)
    30         {
    31             for(int j=1;j<=m;++j)
    32             {
    33                 cin>>s;
    34                 if(s=='#')map[i][j]=1;
    35             }
    36         }
    37         map[1][1]=1;
    38         dfs(1,1);
    39         if(map[m][m])cout<<"YES
    ";
    40         else cout<<"NO
    ";
    41     }
    42     return 0;
    43 }
  • 相关阅读:
    简单工厂模式
    原型模式
    特性Attribute
    MVC_Route层层深入
    异步Async
    sql-connectionStrings
    观察者模式(利用委托)
    SqlServer_存储过程
    c语言----程序记录
    c语言基础笔记
  • 原文地址:https://www.cnblogs.com/mjtcn/p/6746152.html
Copyright © 2011-2022 走看看