本地不报错 提交报CE
查看原帖
本地不报错 提交报CE
845436
gjleeee楼主2023/7/10 21:51
#include <bits/stdc++.h>
using namespace std;

unsigned bx,by,hx,hy,nx,ny;
long long dp[25][25]={0};
const short int move[8][2] = {{1,2},{2,1},{2,-1},{1,-2},{-1,-2},{-2,-1},{-2,1},{-1,2}};

int main(){
	cin>>bx>>by>>hx>>hy;
	
	dp[hx][hy] = -1;
	for (int i=0;i<8;i++){
		nx = hx+move[i][0];
		ny = hy+move[i][1];
		if (nx>=0&&nx<=bx&&ny>=0&&ny<=by){
			dp[nx][ny] = -1;
		}
	}
	
	if (dp[0][0] == -1){
		cout<<0;return 0;
	}
	
	dp[0][0] = 1;
	for (int i=1;i<=bx;i++){
		if (dp[i-1][0]!=-1&&dp[i][0]!=-1) dp[i][0] = dp[i-1][0];
	}
	for (int i=1;i<=by;i++){
		if (dp[0][i-1]!=-1&&dp[0][i]!=-1) dp[0][i] = dp[0][i-1];	
	}
	
	
	for (int i=1;i<=bx;i++){
		for (int j=1;j<=by;j++){
			if (dp[i][j] == -1) continue;
			if (dp[i-1][j] != -1) dp[i][j] += dp[i-1][j];
			if (dp[i][j-1] != -1) dp[i][j] += dp[i][j-1];
		}
	}
	
	cout<<dp[bx][by];
	
	
	return 0;
} 
2023/7/10 21:51
加载中...