1 条题解

  • 0
    @ 2026-9-30 12:43:05

    C++ :

    
    #include <cstdio>
    #include <cstring>
    int main(){
        int n, m, hx, hy;
        if(scanf("%d %d %d %d", &n, &m, &hx, &hy) != 4) return 0;
        static int bad[64][64];
        memset(bad, 0, sizeof(bad));
        int dx[] = {0, 1, 1, 2, 2, -1, -1, -2, -2};
        int dy[] = {0, 2, -2, 1, -1, 2, -2, 1, -1};
        for(int k=0;k<9;k++){
            int x = hx + dx[k], y = hy + dy[k];
            if(x >= 0 && x <= n && y >= 0 && y <= m) bad[x][y] = 1;
        }
        static long long f[64][64];
        memset(f, 0, sizeof(f));
        for(int i=0;i<=n;i++) for(int j=0;j<=m;j++){
            if(bad[i][j]){ f[i][j] = 0; continue; }
            if(i == 0 && j == 0){ f[i][j] = 1; continue; }
            long long v = 0;
            if(i > 0) v += f[i-1][j];
            if(j > 0) v += f[i][j-1];
            f[i][j] = v;
        }
        printf("%lld\n", f[n][m]);
        return 0;
    }
    
    
    • 1

    信息

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