1 条题解

  • 0
    @ 2023-4-4 22:31:54

    一道比较入门的dp题. 答案可能很大,所以记得开 long long.

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    const int fx[9] = {0, -2, -1, 1, 2, 2, 1, -1, -2};
    const int fy[9] = {0, 1, 2, 2, 1, -1, -2, -2, -1};
    int bx, by, mx, my;
    long long f[40][40];
    bool s[40][40];
    int main()
    {
        scanf("%d%d%d%d",&bx,&by,&mx,&my);
        bx=bx+2; 
        by=by+2; 
        mx=mx+2;
        my=my+2;
        f[2][1]=1;
        s[mx][my]=1;
        for(int i=1;i<=8;i=i+1)s[mx+fx[i]][my+fy[i]]=1;
        for(int i=2;i<=bx;i=i+1)
        {
            for(int j=2;j<=by;j=j+1)
            {
                if(s[i][j]) continue;
                f[i][j]=f[i-1][j]+f[i][j-1];
            }
        }
        printf("%lld\n", f[bx][by]);
        return 0;
    } 
    
  • 1

信息

ID
659
时间
1000ms
内存
128MiB
难度
2
标签
递交数
76
已通过
48
上传者