#include<bits/stdc++.h>
#define size 22
int map[size][size];
bool control[size][size];
int pos[9][2]={
{0,0} ,{-1,2} ,{1,2} ,
{2,1} ,{2,-1} ,{1,-2},
{-1,-2},{-2,-1},{-2,1}
};
int m,n,hx,hy;
int dx,dy;
int i,j;
int main(){
scanf("%d %d %d %d",&m,&n,&hx,&hy);
for(i=0;i<9;i++){
dx=hx+pos[i][0],dy=hy+pos[i][1];
if(dx>=0&&dy>=0&&dx<=m&&dy<=n)
control[dx][dy]=1;
}
for(i=1;i<=m;i++)
{
if(control[i][0])
break;
map[i][0]=1;
}
for(i=1;i<=n;i++){
if(control[0][i])
break;
map[0][i]=1;
}
for(i=1;i<=m;i++)
for(j=1;j<=n;j++){
if(!control[i][j])map[i][j]=map[i-1][j]+map[i][j-1];
else map[i][j]=0;
}
printf("%lld",map[m][n]);
return 0;
}
第三个测试数据错啦