求救,这有什么问题
查看原帖
求救,这有什么问题
996992
MarkReisen楼主2024/8/4 15:06
int a,b,x,y;

bool pp(int n ,int m){
    if(n < 0 || n > x || m < 0 || m > y)
        return false;
    return true;
}

void solve() {

    cin >> x >> y >> a >> b;
    vector<vector <int>> mp(x + 1,vector <int> (y + 1, 0));
    vector<vector <bool>> pd(x + 1,vector <bool> (y + 1, true));

    if(pp(a - 1 , b -2))
        pd[a - 1][b - 2] = false;
    if(pp(a - 2 , b - 1))
        pd[a - 2][b - 1] = false;
    if(pp(a - 2 , b + 1))
        pd[a - 2][b + 1] = false;
    if(pp(a - 1 , b + 2))
        pd[a - 1][b + 2] = false;
    if(pp(a + 1 , b + 2))
        pd[a + 1][b + 2] = false;
    if(pp(a + 2 , b + 1))
        pd[a + 2][b + 1] = false;
    if(pp(a + 2 , b - 1))
        pd[a + 2][b - 1] = false;
    if(pp(a + 1 , b - 2))
        pd[a + 1][b - 2] = false;

    for(int i = 0;i <= x;i++){
        mp[0][i] = 1;
    }
    for(int i = 1;i <= x;i++){
        for(int j = 1;j <= y;j++){
            if (pd[i][j]) {
                mp[i][j] = (pd[i - 1][j] ? mp[i - 1][j] : 0) + (pd[i][j - 1] ? mp[i][j - 1] : 0);
            }
    }
    }
    cout<<mp[x][y];
}

2024/8/4 15:06
加载中...