80pts求调
查看原帖
80pts求调
1283894
Czy54188楼主2024/8/25 12:55
#include <bits/stdc++.h>

long long dp[21][21],n,m,x,y,iq[9]={2,2,1,1,-1,-1,-2,-2,0},aq[9]={1,-1,2,-2,2,-2,1,-1,0};
bool flag[21][21];

int main(){
//	memset(dp,0,sizeof(dp));
//	memset(flag,0,sizeof(flag));
	scanf("%lld%lld%lld%lld",&n,&m,&x,&y);
	for(int i=0;i<=n;i++) for(int j=0;j<=m;j++){
		dp[i][j]=0;
		flag[i][j]=false;
	}
	dp[0][1]=1;
	dp[1][0]=1;
	for(int i=0;i<=8;i++){
		long long xx=x+iq[i],yy=y+aq[i];
		if(xx<0 || xx>=n || yy<0 || yy>=m) continue;
		flag[xx][yy]=true;
	}
	for(int i=0;i<=n;i++) for(int j=0;j<=m;j++){
		if(flag[i][j]||(i==0&&j==0)||(i==0&&j==1)||(i==1&&j==0)) continue;
		if(!flag[i-1][j] && i-1>=0){
			dp[i][j]+=dp[i-1][j];
		}
		if(!flag[i][j-1] && j-1>=0){
			dp[i][j]+=dp[i][j-1];
		}
	}
	printf("%lld",dp[n][m]);
	return 0;
} 

#1WA求助

2024/8/25 12:55
加载中...