```cpp
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include <vector>
using namespace std;
const int N = 44;
long long f[N][N] = { 0 };
int ctrl[N][N], xb, yb, hx, hy;
int dx[] = { 0, -2, -1, 1, 2, 2, 1, -1, -2 };
int dy[] = { 0, 1, 2, 2, 1, -1, -2, -2, -1 };
//f[i,j]=f[i-1,j]+f[i,j-1]
int main() {
cin >> xb >> yb >> hx >> hy;//B 和 马
for (int i = 0; i < 9; i++) {
int tmpx = hx + dx[i]; int tmpy = hy + dy[i];
if (tmpx >= 0 && tmpx <= yb && tmpy >= 0 && tmpy <= xb)
ctrl[tmpx][tmpy] = 1;//标记马控制点
}
for (int i = 0; i < N; i++) {
f[i][0] = 1; f[0][i]=1;
}
for (int i = 1; i <= xb; i++) {
for (int j = 1; j <= yb; j++) {
if (!ctrl[i][j]) {
f[i][j] = f[i][j - 1] + f[i - 1][j];
}
}
}
cout << f[xb][yb];
return 0;
}
```
40分了
by AVLw @ 2023-09-25 14:09:13