求助,60分
查看原帖
求助,60分
564825
封禁用户楼主2021/10/16 20:42
#include <bits/stdc++.h>
using namespace std;
int bx,by,hx,hy;
long long dp[25][25];

void in(int &x){
	char c;
	c=getchar();
	while(c<'0'||c>'9') c=getchar();
	
	for(;c>='0'&&c<='9';c=getchar())
		x=x*10+(c-'0');
}

int main(){
	in(bx),in(by),in(hx),in(hy);
	//cout<<bx<<by<<hx<<hy;
	
	dp[0][0]=1;
	for(int i=1;i<=25;++i)
		dp[i][0]=dp[0][i]=1;
	
	dp[hx][hy]=-1;
	dp[hx+1][hy+2]=dp[hx+2][hy+1]=-1;
	
    if(hx==0||hy==0)
        dp[hx][hy]=0;

	if(hx<2||hy<2){
		
		if(hx<2&&hy<2){
				if(hx==1&&hy==1){
					dp[hx+2][hy-1]=-1;
					dp[hx-1][hy+2]=-1;
				}
				else if(hx==1&&hy==0){
						dp[hx-1][hy+2]=-1;
					}
				else if(hx==0&&hy==1){
						dp[hx+2][hy-1]=-1;
					}
			}
		else if(hx<2){
				if(hx==1){
					dp[hx-1][hy-2]=dp[hx-1][hy+2]=-1;
					dp[hx+1][hy-2]=dp[hx+2][hy-1]=-1;
				}
				else{
					dp[hx+1][hy-2]=dp[hx+2][hy-1]=-1;
				}
			}
		else{
				if(hy==1){
						dp[hx-2][hy-1]=dp[hx+2][hy-1]=-1;
						dp[hx-2][hy+1]=dp[hx-1][hy+2]=-1;
					}
				else{
						dp[hx-2][hy+1]=dp[hx-1][hy+2]=-1;
					}
			}
		}
	else{
		dp[hx-1][hy-2]=dp[hx-2][hy-1]=-1;
		dp[hx+1][hy-2]=dp[hx+2][hy-1]=-1;
		
		dp[hx-2][hy+1]=dp[hx-1][hy+2]=-1;
		}
	
	
	for(int i=1;i<=20;++i){
		for(int j=1;j<=20;++j){
			if(dp[i][j]==-1){
				dp[i][j]=0;
				}
			else{
				dp[i][j]=dp[i-1][j]+dp[i][j-1];
				}
			}
		}
	
	for(int i=0;i<=20;++i){
		for(int j=0;j<=20;++j)
			cout<<dp[i][j]<<" ";
		cout<<endl;
	}

	printf("%lld",dp[bx][by]);
	return 0;
}
2021/10/16 20:42
加载中...