都没有人用C写,那我写一个
#include <stdio.h>

int fun(int x,int y,int n,int m);

int main(){
    int n = 0,m = 0,x = 0,y = 0;
    scanf("%d %d %d %d",&n,&m,&x,&y);
    long dp[n+1][m+1];
    for(int i = 0; i < n+1; i++){
        for(int j = 0; j < m+1; j++){
            dp[i][j] = 0;
        }
    }
    int i = 0;
    int j = 0;
    if(fun(x,y,n,m)) dp[x][y] = -1;
    if(fun(x+2,y+1,n,m)) dp[x+2][y+1] = -1;
    if(fun(x+1,y+2,n,m)) dp[x+1][y+2] = -1;
    if(fun(x-1,y+2,n,m)) dp[x-1][y+2] = -1;
    if(fun(x-2,y+1,n,m)) dp[x-2][y+1] = -1;
    if(fun(x-2,y-1,n,m)) dp[x-2][y-1] = -1;
    if(fun(x-1,y-2,n,m)) dp[x-1][y-2] = -1;
    if(fun(x+1,y-2,n,m)) dp[x+1][y-2] = -1;
    if(fun(x+2,y-1,n,m)) dp[x+2][y-1] = -1;
    for(i = 0; i < n+1; i++){
        if(dp[i][0] == -1)
            break;
        dp[i][0] = 1;
    }
    for(j = 0; j < m+1; j++){
        if(dp[0][j] == -1)
            break;
        dp[0][j] = 1;
    }
    for(i = 1; i < n+1; i++){
        for(j = 1; j < m+1; j++){
            if(dp[i][j] == -1 || (dp[i-1][j] == -1 && dp[i][j-1] == -1)){
                continue;
            }
            else if(dp[i-1][j] == -1 && dp[i][j-1] != -1){
                dp[i][j] = dp[i][j-1];
            }
            else if(dp[i-1][j] != -1 && dp[i][j-1] == -1){
                dp[i][j] = dp[i-1][j];
            }
            else{
                dp[i][j] = dp[i-1][j] + dp[i][j-1];
            }
        }
    }
    printf("%ld",dp[i-1][j-1]);
    return 0;
}

int fun(int x,int y,int n,int m){
    if(x >= 0 && x <= n && y >= 0 && y <= m)
        return 1;
    else
        return 0;
}