zoukankan      html  css  js  c++  java
  • nyoj 1129 Salvation

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=1129

    题目分析:感觉题目说的不是多么的清晰,看了别人的分析觉得,也就是说在一个方向不能拐四次弯;大于四次就要return了;方向可以自己定义,方便使用就好

    AC代码:

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<queue>
     4 #include<cstdio>
     5 #include<cstring>
     6 using namespace std;
     7 int n , m;
     8 char map[110][110];
     9 int ex,ey,sx,sy,flag ;
    10 int dir[4][2] = {1,0,0,-1,-1,0,0,1};
    11 int vis[110][110];
    12 bool judge(int x,int y)
    13 {
    14     if(x<1 || x>n || y<1 || y>m || map[x][y] == '#')
    15         return false;
    16     return true;
    17 }
    18 void  dfs(int D,int x,int y)
    19 {
    20       int xx,yy;
    21 
    22       if(x ==  ex && y == ey)
    23       {
    24           flag =1;
    25          return ;
    26       }
    27         int sd = D-1;
    28         for(int i =0; i<4; i++)
    29         {
    30             D = (sd+i+8)%4;
    31             xx = x + dir[D][0];
    32             yy = y + dir[D][1];
    33              //printf("dd:  %d %d
    ",xx,yy);
    34             if(judge(xx,yy))
    35             {
    36                 if(vis[xx][yy] == 4) return ;
    37                 vis[xx][yy]++;
    38                 dfs(D,xx,yy);
    39                 return ;//这个可不能忘
    40             }
    41         }
    42     return ;
    43 }
    44 int main()
    45 {
    46     char s;
    47     while(scanf("%d %d",&n,&m)!=EOF)
    48     {
    49         memset(vis,0,sizeof(vis));
    50         for(int i = 1; i<=n; i++)
    51             for(int j =1;j<=m; j++)
    52             {
    53                 scanf(" %c",&map[i][j]);
    54                 if(map[i][j] == 'T') sx =i,sy =j;
    55                 if(map[i][j] == 'X') ex =i,ey =j;
    56             }
    57             scanf(" %c",&s);
    58             vis[sx][sy] = 1;
    59             int dr;
    60             if(s == 'S') dr = 0;
    61             else if(s == 'W') dr = 1;
    62             else if(s == 'N') dr = 2;
    63             else dr = 3;
    64              flag = 0;
    65             dfs(dr,sx,sy);
    66             if(flag)
    67              printf("YES
    ");
    68              else printf("NO
    ");
    69     }
    70     return 0;
    71 }
  • 相关阅读:
    GenericServlet vs HttpServlet
    il c井
    额。。万恶之源就是c
    js算数优先级
    connect-flash 中间件
    触发bfd 的条件
    module 和 module.exports 的区别
    a标签填充父容器
    bootstrap
    每日一练排版
  • 原文地址:https://www.cnblogs.com/lovychen/p/4424557.html
Copyright © 2011-2022 走看看