测试样例证明结果大很多
#include <bits/stdc++.h>
using namespace std;
long long a[31][31];
bool m[31][31];
int bx,by,mx,my;
bool is_ruled(int x,int y)
{
if(m[x+2][y+1]||m[x+1][y+2]||m[x-1][y-2]||m[x-2][y-1]||m[x+1][y-2]||m[x+2][y-2]||m[x-1][y-2]||m[x-2][y-1])
{
return true;
}
return false;
}
int main()
{
cin>>bx>>by>>mx>>my;
bx+=5;
by+=5;
mx+=5;
my+=5;
m[mx][my]=true;
for(int i=5;i<=bx;i++)
{
if(is_ruled(i,5))
{
continue;
}
a[i][5]=1;
}
for(int i=5;i<=by;i++)
{
if(is_ruled(5,i))
{
continue;
}
a[5][i]=1;
}
for(int i=6;i<=bx;i++)
{
for(int j=6;j<=by;j++)
{
if(is_ruled(i,j))
{
continue;
}
a[i][j]=a[i-1][j]+a[i][j-1];
}
}
cout<<a[bx][by];
return 0;
}