60pts求助!
查看原帖
60pts求助!
1067504
godogod楼主2024/10/4 15:44
#include<bits/stdc++.h>
using namespace std;
long long dp[50][50];
bool a[50][50];
int main()
{
	int xb,yb;
	int xh,yh;
	cin>>xb>>yb>>xh>>yh;
	for(int i=1;i<=xb;i++)
	{
		for(int j=1;j<=yb;j++)a[i][j]=true;
	}
	for(int i=1;i<=xb;i++)
	{
		for(int j=1;j<=yb;j++)dp[i][j]=0;
	}
	a[xh][yh]=false;
	
	for(int i=0;i<=xb;i++)
	{
		for(int j=0;j<=yb;j++)
		{
			if((i==xh+1 && j==yh+2)  || (i==xh+2 && j==yh+1)||(i==xh+2 && j==yh-1)||(i==xh+1 && j==yh-2)||(i==xh-1 && j==yh-2)||(i==xh-2 && j==yh-1)||(i==xh-2 && j==yh+1)||(i==xh-1 && j==yh+2))
			{
	//			cout<<i<<" "<<j<<endl;
				a[i][j]=false;dp[i][j]=0;
			 }
			else if(i==0 || j==0) 
			{
				dp[i][j]=1;
			} 
		}	
	}
	dp[xh][yh]=0;
	for(int i=0;i<=xb;i++)
	{
		for(int j=0;j<=yb;j++)
		{
			if(a[i][j]==true)
			{
				dp[i][j]=dp[i-1][j]+dp[i][j-1];
			}
		}
	}
/*	for(int i=0;i<=xb;i++)
	{
		for(int j=0;j<=yb;j++)
		{
			cout<<setw(3)<<dp[i][j]<<" ";
		}
		cout<<endl;
	}//*/
//
	cout<<dp[xb][yb];
	return 0;
}
2024/10/4 15:44
加载中...