6 条题解

  • 0
    @ 2026-3-29 12:17:52

    #include using namespace std; int n, m, cx, cy; int main() { cin >> n >> m >> cx >> cy;

    bool blocked[25][25] = {false};
    blocked[cx][cy] = true;
    
    int dx[] = {2, 2, -2, -2, 1, 1, -1, -1};
    int dy[] = {1, -1, 1, -1, 2, -2, 2, -2};
    
    for (int i = 0; i < 8; ++i) {
        int nx = cx + dx[i];
        int ny = cy + dy[i];
        if (nx >= 0 && nx <= n && ny >= 0 && ny <= m) {
            blocked[nx][ny] = true;
        }
    }
    
    long long dp[25][25] = {0};
    dp[0][0] = 1;
    
    for (int j = 1; j <= m; ++j) {
        if (!blocked[0][j]) {
            dp[0][j] = dp[0][j-1];
        }
    }
    
    for (int i = 1; i <= n; ++i) {
        if (!blocked[i][0]) {
            dp[i][0] = dp[i-1][0];
        }
    }
    
    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= m; ++j) {
            if (!blocked[i][j]) {
                dp[i][j] = dp[i-1][j] + dp[i][j-1];
            }
        }
    }
    
    cout << dp[n][m] << endl;
    

    return 0; }
    //supermonkey 布置的7891978作业(MAN)

    信息

    ID
    659
    时间
    1000ms
    内存
    128MiB
    难度
    7
    标签
    递交数
    301
    已通过
    80
    上传者