19 条题解

  • 0
    @ 2026-3-26 16:58:17
    #include <iostream>
    #include <vector>
    using namespace std;
    
    const int dx[] = {-1, 1, 0, 0};
    const int dy[] = {0, 0, -1, 1};
    
    bool beats(char a, char b) {
        return (a == 'R' && b == 'S') || 
               (a == 'S' && b == 'P') || 
               (a == 'P' && b == 'R');
    }
    
    void simulate(vector<vector<char>>& grid, int r, int c) {
        vector<vector<char>> newGrid = grid;
        
        for (int i = 0; i < r; ++i) {
            for (int j = 0; j < c; ++j) {
                for (int k = 0; k < 4; ++k) {
                    int ni = i + dx[k];
                    int nj = j + dy[k];
                    
                    if (ni >= 0 && ni < r && nj >= 0 && nj < c) {
                        if (beats(grid[ni][nj], grid[i][j])) {
                            newGrid[i][j] = grid[ni][nj];
                            break;
                        }
                    }
                }
            }
        }
        
        grid = newGrid;
    }
    
    int main() {
        int r, c, n;
        cin >> r >> c >> n;
        
        vector<vector<char>> grid(r, vector<char>(c));
        for (int i = 0; i < r; ++i) {
            for (int j = 0; j < c; ++j) {
                cin >> grid[i][j];
            }
        }
        
        for (int day = 0; day < n; ++day) {
            simulate(grid, r, c);
        }
        
        for (int i = 0; i < r; ++i) {
            for (int j = 0; j < c; ++j) {
                cout << grid[i][j];
            }
            cout << endl;
        }
        
        return 0;
    }
    

    信息

    ID
    380
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    5
    已通过
    1
    上传者