The content of main.cpp:
#include<iostream>
using namespace std;
int way(int a,int b,int nx,int ny);
int pro(int a,int b,int nx,int ny,int **dp);
int main()
{
int aimx,aimy,housex,housey;
cin>>aimx>>aimy>>housex>>housey;
int ways=0;
ways=way(aimx,aimy,housex,housey);
cout<<ways;
return 0;
}
int way(int a,int b,int nx,int ny)
{
int **dp;
dp=new int *[a+1];
for(int i=0;i<=a;i++)
{
dp[i]=new int [b+1];
}
for(int i=0;i<=a;i++)
{
for(int j=0;j<=b;j++)
{
dp[i][j]=-1;
}
}
int m=pro(a,b,nx,ny,dp);
for(int i=0;i<a;i++)
{
delete[]dp[i];
}
delete[]dp;
return m;
}
int pro(int a,int b,int nx,int ny,int **dp)
{
if(dp[a][b]!=-1)
{
return dp[a][b];
}
int ans=0;
if(a==nx&&b==ny)
{
ans=0;
dp[a][b]=0;
return ans;
}
if(a==nx+2&&b==ny+1)
{
ans=0;
dp[a][b]=0;
return ans;
}
if(a==nx+1&&b==ny+2)
{
ans=0;
dp[a][b]=0;
return ans;
}
if(a==nx+2&&b==ny-1)
{
ans=0;
dp[a][b]=0;
return ans;
}
if(a==nx+1&&b==ny-2)
{
ans=0;
dp[a][b]=0;
return ans;
}
if(a==nx-1&&b==ny+2)
{
ans=0;
dp[a][b]=0;
return ans;
}
if(a==nx-2&&b==ny+1)
{
ans=0;
dp[a][b]=0;
return ans;
}
if(a==nx-1&&b==ny-2)
{
ans=0;
dp[a][b]=0;
return ans;
}
if(a==nx-2&&b==ny-1)
{
ans=0;
dp[a][b]=0;
return ans;
}
if(a==0)
{
ans=1;
dp[a][b]=1;
return ans;
}
if(b==0)
{
ans=1;
dp[a][b]=1;
return ans;
}
return pro(a-1,b,nx,ny,dp)+pro(a,b-1,nx,ny,dp);
}