60分求助 #3#4
查看原帖
60分求助 #3#4
815190
syxuu楼主2022/10/26 10:55

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);
}
2022/10/26 10:55
加载中...