long long 才能过。。
没啥好说的。。
#include<stdio.h>
#include<string.h>
long long map[25][25];
int main()
{
int n,m,x,y;
while(scanf("%d%d%d%d",&n,&m,&x,&y)!=EOF)
{
memset(map,0,sizeof(map));
map[0][0]=1;
int i;
for(i=1;i<=n;i++)
{
if((x-i)*(x-i)+y*y!=5&&(i!=x||y!=0))
{
map[i][0]=map[i-1][0];
}
}
for(i=1;i<=m;i++)
{
if(x*x+(y-i)*(y-i)!=5&&(i!=y||x!=0))
{
map[0][i]=map[0][i-1];
}
}
for(i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
if((x-i)*(x-i)+(y-j)*(y-j)!=5&&(i!=x||j!=y))
{
map[i][j]=map[i-1][j]+map[i][j-1];
}
}
printf("%lld\n",map[n][m]);
}
return 0;
}