```cpp
#include<bits/stdc++.h>
using namespace std;
bool a[25][25];
long long f[25][25];
int n,m,x,y;
int main()
{
f[1][1]=1;
cin>>n>>m>>x>>y;
n++;
m++;
x++;
y++;
a[x][y]=1;
a[x-2][y-1]=1;
a[x-2][y+1]=1;
a[x+2][y-1]=1;
a[x+2][y+1]=1;
a[x-1][y+2]=1;
a[x-1][y-2]=1;
a[x+1][y+2]=1;
a[x+1][y-2]=1;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)if((i!=1||j!=1)&&!a[i][j]) f[i][j]=f[i-1][j]+f[i][j-1];
cout<<f[n][m];
return 0;
}
```
by keep_shining @ 2024-04-01 15:25:05
@[caochenkai](/user/1208635)
~~帮忙at一下~~
by FXLIR @ 2024-04-01 15:47:46
```
#include<iostream>
using namespace std;
struct point{
int x,y;
};
unsigned long long k[22][22];
point a[36];
int dx[9]={0,1,-1,1,-1,2,-2,2,-2};
int dy[9]={0,2,-2,-2,2,1,-1,-1,1};
int posx,posy,hposx,hposy;
void dfspoints(int hx,int hy){
a[0].x=hx;a[0].y=hy;
for(int i=1;i<=8;i++)
{
a[i].x=hx+dx[i];
a[i].y=hy+dy[i];
}
}
unsigned long long dfs(int px,int py){
if(k[px][py]>0) return k[px][py];
if(py>posy||px>posx) return 0;
for(int i=0;i<=8;i++) if(a[i].x==px&&a[i].y==py) return 0;
if(px==posx&&py==posy) return 1;
k[px][py]=dfs(px+1,py)+dfs(px,py+1);
return k[px][py];
}
int main(){
cin>>posx>>posy>>hposx>>hposy;
dfspoints(hposx,hposy);
cout<<dfs(0,0);
}
```
by zhangyining2357 @ 2024-04-14 19:23:52