#3#4wa求助
查看原帖
#3#4wa求助
716878
mzyhello楼主2022/7/13 18:29
# include <bits/stdc++.h>
using namespace std;

long long ch[100][100];//dp数组

int main(){
    int bx,by,hx,hy,t;
    cin>>bx>>by>>hx>>hy;
    //-1为没dp的点
    for (int i = 0;i<=bx;i++){
        for (int j = 0;j<=by;j++){
            ch[i][j] = -1;
        }
    }
    //第一行和第一列赋值1
    for (int i = 0;i<=bx;i++) ch[i][0] = 1;
    for (int i = 0;i<=by;i++) ch[0][i] = 1;
    //马的落点
    if (hx>=0&&hx<=bx&&hy>=0&&hy<=by) ch[hx][hy] = 0;
    if (hx-1>=0&&hx-1<=bx&&hy-2>=0&&hy-2<=by) ch[hx-1][hy-2] = 0;
    if (hx-2>=0&&hx-2<=bx&&hy-1>=0&&hy-1<=by) ch[hx-2][hy-1] = 0;
    if (hx+1>=0&&hx+1<=bx&&hy-2>=0&&hy-2<=by) ch[hx+1][hy-2] = 0;
    if (hx+2>=0&&hx+2<=bx&&hy-1>=0&&hy-1<=by) ch[hx+2][hy-1] = 0;
    if (hx-1>=0&&hx-1<=bx&&hy+2>=0&&hy+2<=by) ch[hx-1][hy+2] = 0;
    if (hx-2>=0&&hx-2<=bx&&hy+1>=0&&hy+1<=by) ch[hx-2][hy+1] = 0;
    if (hx+1>=0&&hx+1<=bx&&hy+2>=0&&hy+2<=by) ch[hx+1][hy+2] = 0;
    if (hx+2>=0&&hx+2<=bx&&hy+1>=0&&hy+1<=by) ch[hx+2][hy+1] = 0;
    //dp
    for (int i = 0;i<=bx;i++){
        for (int j = 0;j<=by;j++){
            if (ch[i][j] == -1){
                ch[i][j] = ch[i-1][j] + ch[i][j-1];
            }
        }
    }
    
    printf("%lld",ch[bx][by]);
    return 0;
}

2022/7/13 18:29
加载中...