求助
查看原帖
求助
1159589
oKdm楼主2024/5/3 19:52
#include <iostream>
using namespace std;

int Map[25][25];
int FinalX,FinalY;
int HorseX,HorseY;
long long int cnt;

void MakeTable(){
	for(int i = 0; i <= FinalX; i++){
		for(int j = 0; j <= FinalY; j++){
			Map[i][j] = 1;
		}
	}
	Map[HorseX][HorseY] = 0;
	if(HorseX >= 1 && HorseY >= 1)
		Map[HorseX-1][HorseY-1] = 0;
	
	if(HorseX <= FinalX - 1 && HorseY <= FinalY - 1)
		Map[HorseX+1][HorseY+1] = 0;
	
	if(HorseX >= 2 && HorseY >= 2){
		Map[HorseX-2][HorseY-2] = 0;Map[HorseX-2][HorseY-1] = 0;Map[HorseX-1][HorseY-2] = 0;
	}
	
	if(HorseX <= FinalX - 2 && HorseY <= FinalY - 2){
		Map[HorseX+2][HorseY+2] = 0;Map[HorseX+2][HorseY+1] = 0;Map[HorseX+1][HorseY+2] = 0;
	}
	
	if(HorseX >= 2 && HorseY <= FinalY - 1)Map[HorseX-2][HorseY+1] = 0;
	
	if(HorseX >= 1 && HorseY <= FinalY - 2)Map[HorseX-1][HorseY+2] = 0;
	
	if(HorseX <= FinalX - 1 && HorseY >= 2)Map[HorseX+1][HorseY-2] = 0;

	if(HorseX <= FinalX - 2 && HorseY >= 1)Map[HorseX+2][HorseY-1] = 0;

}

void SearchPathes(int x, int y){
	if(Map[x][y] == 1){
		if(x == FinalX && y == FinalY){
			cnt++;
			return;
		}
		else{
			SearchPathes(x+1,y);
			SearchPathes(x,y+1);
		}
	}
}

int main(){
	cin >> FinalX >> FinalY >> HorseX >> HorseY;
	MakeTable();
	SearchPathes(0,0);
	cout << cnt;
}
2024/5/3 19:52
加载中...