第3和第4个检查点完全过不去
#include<iostream>
using namespace std;
long long board[50][50];
int xb, yb, n, m;
int main() {
long long total;
bool flag;
cin >> xb >> yb >> n >> m;
for (int i = 0; i <= xb; i++) {
for (int j = 0; j <= yb; j++) {
board[i][j] = 0;
}
}
flag = false;
for (int i = 0; i <= xb; i++) {
for (int j = 0; j <= yb; j++) {
if ((i == n - 1 && j == m - 2) || (i == n - 2 && j == m - 1) || (i == n + 1 && j == m + 2) || (i == n + 2 && j == m + 1) || (i == n + 2 && j == m - 1) || (i == n - 1 && j == m + 2) || (i == n - 2 && j == m + 1) || (i == n + 1 && j == m - 2) || (i == n && j == m)) {
board[i][j] = 0;
if (i == 0 && j == 0) {
flag = true;
break;
}
}
else {
if (i == 0 || j == 0) {
board[i][j] = 1;
}
else {
board[i][j] = board[i - 1][j] + board[i][j - 1];
}
}
}
}
if (flag) {
total = 0;
}
else {
total = board[xb][yb];
}
cout << total;
return 0;
}