#include<bits/stdc++.h>
using namespace std;
int main()
{
long long f[30][30],g[30][30];
int b,m,q,w;
cin>>b>>m>>q>>w;
if(b==1&&m==1)
{
cout<<1;
return 0;
}
memset(f,0,sizeof(f));
memset(g,0,sizeof(g));//初始化
g[q][w]=1;
if(q-1>=0&&w-2>=0)g[q-1][w-2]=1;
if(q-1>=0&&w+2<=m)g[q-1][w+2]=1;
if(q-2>=0&&w-1>=0)g[q-2][w-1]=1;
if(q-2>=0&&w+2<=m)g[q-2][w+1]=1;
if(q+2<=b&&w-1>=0)g[q+2][w-1]=1;
if(q+1<=b&&w+2<=m)g[q+1][w+2]=1;
if(q+1<=b&&w-2>=0)g[q+1][w-2]=1;
if(q+2<=b&&w+1<=m)g[q+2][w+1]=1;//马能踩到的位置
for(int i=0;i<=b;i++)
{
if(g[i][0]==1)break;
f[i][0]=1;
}
for(int i=0;i<=m;i++)
{
if(g[0][i]==1)break;
f[0][i]=1;
}
for(int i=1;i<=b;i++)
{
for(int j=1;j<=m;j++)
{
if(g[i][j]==0)f[i][j]=f[i-1][j]+f[i][j-1];//画图你就明白了
else f[i][j]=0;//卒不能走的位置
}
}
if(g[b][m]==1)cout<<0;
else cout<<f[b][m];
return 0;
}
P1002 [NOIP2002 普及组] 过河卒
最新推荐文章于 2024-07-04 11:10:43 发布