1 条题解

  • 0
    @ 2025-5-5 13:06:01
    #include <iostream>
    #include <string>
    #include <vector>
    using namespace std;
    
    int main() {
        int r, c, start;
        while (cin >> r >> c >> start, r || c || start) {
            vector<string> grid(r);
            for (int i = 0; i < r; ++i)
                cin >> grid[i];
    
            vector<vector<int> > visited(r, vector<int>(c, -1));
            int step = 0;
            int x = 0, y = start - 1;
    
            while (true) {
                if (x < 0 || x >= r || y < 0 || y >= c) {
                    cout << step << " step(s) to exit" << endl;
                    break;
                }
                if (visited[x][y] != -1) {
                    cout << visited[x][y] << " step(s) before a loop of " << step - visited[x][y] << " step(s)" << endl;
                    break;
                }
                visited[x][y] = step++;
                char dir = grid[x][y];
                if (dir == 'N') --x;
                else if (dir == 'S') ++x;
                else if (dir == 'E') ++y;
                else if (dir == 'W') --y;
            }
        }
        return 0;
    }
    
    
    • 1

    信息

    ID
    574
    时间
    1000ms
    内存
    10MiB
    难度
    8
    标签
    递交数
    3
    已通过
    1
    上传者