#include<iostream>
#include<cstring>
using namespace std;
const int jump_x[]={0,2,2,1,1,-1,-1,-2,-2};
const int jump_y[]={0,1,-1,2,-2,2,-2,1,-1};
bool sign[40][40]={0};
long long route[40][40];
int main()
{
int b_x,b_y,horse_x,horse_y;
cin>>b_x>>b_y>>horse_x>>horse_y;
for(int i=0;i<9;i++)
{
if(horse_x-jump_x[i]>=0&&horse_x-jump_x[i]<=b_x&&horse_y-jump_y[i]>=0&&horse_y-jump_y[i]<=b_y)
{
sign[horse_x-jump_x[i]][horse_y-jump_y[i]]=1;
}
}
for(int i=0;i<=b_y;i++)
{
if(sign[0][i]!=1)
route[0][i]=1;
else
route[0][i]=0;
}
for(int i=0;i<=b_x;i++)
{
if(sign[i][0]!=1)
route[i][0]=1;
else
route[i][0]=0;
}
for(int i=1;i<=b_x;i++)
for(int j=1;j<=b_y;j++)
{
if(sign[i][j]!=1)
route[i][j]=route[i][j-1]+route[i-1][j];
else
route[i][j]=0;
}
cout<<route[b_x][b_y];
return 0;
}
就是第三组数据 20 20 0 1 我的输出是 57050531010 答案是 56477364570