3,4测试点超时,求大佬帮忙
#include <bits/stdc++.h>
using namespace std;
int arr[25][25];
long long dg(int n,int m)
{
if(arr[n][m]==1)
{
return 0;
}
if(n-1<0&&m-1>=0)
{
return dg(n,m-1);
}
else if(m-1<0&&n-1>=0)
{
return dg(n-1,m);
}
else if(m-1<0&&n-1<0)
{
return 1;
}
else
{
return dg(n-1,m)+dg(n,m-1);
}
}
int main()
{
int n,m,a,b;
cin>>n>>m>>a>>b;
arr[a][b]=1;
if(a-1>=0&&b-2>=0)
{
arr[a-1][b-2]=1;
}
if(a-2>=0&&b-1>=0)
{
arr[a-2][b-1]=1;
}
if(a-2>=0&&b+1<=m)
{
arr[a-2][b+1]=1;
}
if(a-1>=0&&b+2<=m)
{
arr[a-1][b+2]=1;
}
if(a+1<=n&&b+2<=m)
{
arr[a+1][b+2]=1;
}
if(a+2<=n&&b+1<=m)
{
arr[a+2][b+1]=1;
}
if(a+1<=n&&b-2>=0)
{
arr[a+1][b-2]=1;
}
if(a+2<=n&&b-1>=0)
{
arr[a+2][b-1]=1;
}
cout<<dg(n,m);
return 0;
}