#include <bits/stdc++.h>
using namespace std;
#define long long int
const int N=30;
int dx[]={0,1,2,2,1,-1,-2,-2,-1};
int dy[]={0,-2,-1,1,2,2,1,-1,-2};
int hx[10];
int hy[10];
int a[N][N];
int ax,ay,bx,by;
int flag;
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>ax>>ay>>bx>>by;
ax++;
ay++;
bx++;
by++;
for(int i=1;i<=8;i++)
{
int px=bx+dx[i];
int py=by+dy[i];
if(px<1||px>ax||py<1||py>ay) continue;
hx[i]=px;
hy[i]=py;
}
hx[9]=bx;
hy[9]=by;
a[1][1]=1;
for(int i=1;i<=ax;i++)
{
for(int j=1;j<=ay;j++)
{
for(int k=1;k<=9;k++)
if(i==hx[k]&&j==hy[k])
flag=1;
if(!flag)
{
if(i==1) a[i][j]=a[i][j]+a[i][j-1];
else if(j==1) a[i][j]=a[i][j]+a[i-1][j];
else a[i][j]=a[i][j]+a[i-1][j]+a[i][j-1];
}
flag=0;
}
}
/*for(int i=1;i<=ax;i++)
{
for(int j=1;j<=ay;j++)
{
cout<<a[i][j]<<' ';
}
cout<<endl;
}*/
cout<<a[ax][ay];
return 0;
}
测试数据的时候发现有的地方出现了负数,但是没看出来哪里越界了