提供思路: { int m, n, a, b;
cin >> m >> n >> a >> b;
m += 100;
n += 100;
a += 100;
b += 100;
bool flag[125][125] = {0};
flag[a][b] = 1;
// for (int i = -3; i < 4; i++) // { // for (int j = -3; j < 4; j++) // { // int n1 = abs(i), n2 = abs(j); // if ((n1 + n2 == 3)&&(max(n1, n2) == 2)&&(max(a+i,b+j)>-1)) // arr[a + i][b + j] = -1; // } // } flag[a+2][b+1] = 1; flag[a+1][b+2] = 1; flag[a-1][b+2] = 1; flag[a-2][b+1] = 1; flag[a-2][b-1] = 1; flag[a-1][b-2] = 1; flag[a+1][b-2] = 1; flag[a+2][b-1] = 1;
long long arr[125][125] = {0};
for (int i = 100; i < m + 1; i++)
{
if (flag[i][100] == 0)
{
arr[i][100] = 1;
}
else
{
break;
}
}
for (int i = 100; i < n + 1; i++)
{
if (flag[100][i] == 0)
{
arr[100][i] = 1;
}
else
{
break;
}
}
for (int i = 101; i < m + 1; i++)
{
for (int j = 101; j < n + 1; j++)
{
if (flag[i][j] != 1)
{
// if (i > 0 && j > 0) arr[i][j] = arr[i - 1][j] + arr[i][j - 1]; // else // arr[i][j] = 1; } }
}
cout << arr[m][n];
}