#include <bits/stdc++.h>
using namespace std;
long long n,m,x,y,dp[100][100];//dp[i][j]表示(i,j)到(n,m)路径
bool a[50][50];
void clean(){//预处理
for(int i = 0;i <= n + 1;i++){
for(int j = 0;j <= m + 1;j++){
if(i == x + 1 && j == y - 2) a[i][j] == 0;
else if(i == x - 1 && j == y - 2) a[i][j] = 0;
else if(i == x - 2 && j == y - 1) a[i][j] = 0;
else if(i == x + 2 && j == y - 1) a[i][j] = 0;
else if(i == x - 2 && j == y + 1) a[i][j] = 0;
else if(i == x - 1 && j == y + 2) a[i][j] = 0;
else if(i == x + 1 && j == y + 2) a[i][j] = 0;
else if(i == x + 2 && j == y + 1) a[i][j] = 0;
else if(i == x && j == y) a[i][j] = 0;
else if(i > n || j > m) a[i][j] = 0;
else a[i][j] = 1;
}
}
}
int f(){//动态规划
for(int i = n;i >= 0;i--){
for(int j = m;j >= 0;j--){
if(!a[i][j]) dp[i][j] = 0;
else if(i == n && j == m) dp[i][j] = 1;
else if(!a[i + 1][j] && !a[i][j + 1]) dp[i][j] = 0;
else if(!a[i + 1][j]) dp[i][j] = dp[i][j + 1];
else if(!a[i][j + 1]) dp[i][j] = dp[i + 1][j];
else dp[i][j] = dp[i][j + 1] + dp[i + 1][j];
}
}
return dp[0][0];
}
int main(){
cin >> n >> m >> x >> y;
clean();
cout << f();
return 0;
}
求助哪里错了?