• POJ-1573 Robot Motion模拟


    题目链接:

    https://vjudge.net/problem/POJ-1573

    题目大意:

    有一个N*M的区域,机器人从第一行的第几列进入,该区域全部由'N' , 'S' , 'W' , 'E' ,走到某个区域的时候只能按照该区域指定的方向进行下一步,问你机器人能否走出该片区域,若不能,输入开始绕圈的步数和圈的大小。

    思路:

    一开始一直WA,后来发现是因为vis数组的问题,这里设置的vis数组表示到该点走的步数,最开始是0步,这和初始化是0步是一样的,会导致如果再次走到这个点,就会判断成该点没有走过,后来初始化成-1,A了

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<cmath>
     6 #include<queue>
     7 #include<stack>
     8 #include<map>
     9 using namespace std;
    10 typedef long long ll;
    11 const int maxn = 1e2 + 10;
    12 const int INF = 1 << 30;
    13 int dir[4][2] = {1,0,0,1,-1,0,0,-1};
    14 int T, n, m, x;
    15 map<char, int>M;
    16 int Map[20][20];
    17 int vis[20][20];
    18 void dfs(int x, int y, int d)
    19 {
    20     //cout<<x<<" "<<y<<" "<<d<<endl;
    21     if(x <= 0 || x > n || y <= 0 || y > m)
    22     {
    23         cout<<d<<" step(s) to exit"<<endl;
    24         return;
    25     }
    26     if(vis[x][y] != -1)
    27     {
    28         cout<<vis[x][y]<<" step(s) before a loop of "<<d - vis[x][y]<<" step(s)"<<endl;
    29         return;
    30     }
    31     int cn = Map[x][y];
    32     vis[x][y] = d;
    33     dfs(x + dir[cn][0], y + dir[cn][1], d + 1);
    34 }
    35 int main()
    36 {
    37     M['S'] = 0;
    38     M['E'] = 1;
    39     M['N'] = 2;
    40     M['W'] = 3;
    41 
    42     while(cin >> n >> m >> x)
    43     {
    44         if(!n && !m && !x)break;
    45         memset(vis, -1, sizeof(vis));
    46         //这里不能设置成0,应该设置成-1,因为设置成0的话,第一步出发设置的也是0,这样就会把第一步标记成未走过的点了
    47         memset(Map, 0, sizeof(Map));
    48         char c;
    49         for(int i = 1; i <= n; i++)
    50         {
    51             for(int j = 1;j <= m; j++)
    52             {
    53                 cin >> c;
    54                 Map[i][j] = M[c];
    55             }
    56         }
    57         dfs(1, x, 0);
    58     }
    59     return 0;
    60 }
  • 相关阅读:
    iOS CALayer 学习(2)
    iOS CALayer 学习(1)
    iOS 绘画学习(5)
    iOS 绘画学习(4)
    果冻视图制作教程
    15个名不见经传的Unix命令
    WEB服务器2--IIS架构(转)
    WEB服务器1--开篇
    HTTP协议5之代理--转
    HTTP协议4之缓存--转
  • 原文地址:https://www.cnblogs.com/fzl194/p/8718787.html
Copyright © 2020-2023  润新知