```
#include<iostream>
#include <iomanip>
using namespace std;
long long map[30][30],w[1010][1010], x[8]={1,2,2,1,-1,-2,-2,-1}, y[8]={2,1,-1,-2,-2,-1,1,2}, xx[2]={0,1}, yy[2]={1,0}, fuck;
long long f(long long a,long long b)
{
if(map[a][b]==-1)
return 0;
if(a==0||b==0)
return w[a][b];
if(a>0)
{
if(w[a-1][b]==0)
w[a-1][b]=f(a-1,b);
}
if(b>0)
{
if(w[a][b-1]==0)
w[a][b-1]=f(a,b-1);
}
return w[a-1][b]+w[a][b-1];
}
int main()
{
long long x1,y1,x2,y2;
cin>>x1>>y1>>x2>>y2;
map[x2][y2]=-1;
for(int i=0;i<8;++i)
{
if(x2+x[i]>=0&&y2+y[i]>=0)
map[x2+x[i]][y2+y[i]]=-1;
}
for(int i=0;i<=y1;i++)
{
if(map[0][i]==-1)
break;
w[0][i]=1;
}
for(int i=0;i<=x1;i++)
{
if(map[i][0]==-1)
break;
w[i][0]=1;
}
cout<<f(x1,y1);
return 0;
}
```
by drinktowind @ 2023-07-19 16:59:06
先给第一行第一列赋值1
注意,如果有-1,停止
by drinktowind @ 2023-07-19 17:00:47
求关
by drinktowind @ 2023-07-19 17:01:27
@ drinktowind 谢谢
by 大海中的孤帆 @ 2023-07-19 19:31:21
但我不理解我先前的算法问题在哪
by 大海中的孤帆 @ 2023-07-19 19:39:24
为什么就多给边界一个初始化就AC了
by 大海中的孤帆 @ 2023-07-19 19:40:29