1 条题解

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

    C++ :

    
    #include <cstdio>
    int main(){
        int n, m;
        if(scanf("%d %d", &n, &m) != 2) return 0;
        int x1, y1, x2, y2;
        if(scanf("%d %d %d %d", &x1, &y1, &x2, &y2) != 4) return 0;
        if(x1 > x2){ int t = x1; x1 = x2; x2 = t; }
        if(y1 > y2){ int t = y1; y1 = y2; y2 = t; }
        /* A(1,1) -> B(n,m),只能向东(+x)或向北(+y)。障碍矩形 [x1..x2]x[y1..y2] 不可通行。 */
        static long long f[64][64];
        for(int i=1;i<=n;i++) for(int j=1;j<=m;j++){
            if(i >= x1 && i <= x2 && j >= y1 && j <= y2){ f[i][j] = 0; continue; }
            if(i == 1 && j == 1){ f[i][j] = 1; continue; }
            f[i][j] = 0;
            if(i > 1) f[i][j] += f[i-1][j];
            if(j > 1) f[i][j] += f[i][j-1];
        }
        printf("%lld\n", f[n][m]);
        return 0;
    }
    
    
    • 1

    信息

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