2点TLE
查看原帖
2点TLE
317400
Foggy_night楼主2023/2/25 09:36
#include<iostream>
using namespace std;
int dx[2] = {1,0};
int dy[2] = {0,1};
int a[35][35];
bool vis[35][35];
int cnt;
int end_x, end_y, horse_x, horse_y;
void dfs(int x, int y){
	if(a[x][y] == 3){
		cnt++;
		return ;
	}
	for(int i = 0; i < 2; i++){
		int nx = dx[i] + x;
		int ny = dy[i] + y;
		if(nx < 0 || ny < 0 || nx > end_x || ny > end_y)
			continue;
		if(a[nx][ny] != 1 && vis[nx][ny] == false){
			vis[nx][ny] = true;
			dfs(nx, ny);
			vis[nx][ny] = false;
		}
	}
}
int main(){
	cin >> end_x >> end_y >> horse_x >> horse_y;
	if(horse_x-2 >= 0 && horse_y-1 >= 0)
		a[horse_x-2][horse_y-1] = 1;
	if(horse_x-1 >= 0 && horse_y-2 >= 0)
		a[horse_x-1][horse_y-2] = 1;
	if(horse_x+1 >= 0 && horse_y-2 >= 0)
		a[horse_x+1][horse_y-2] = 1;
	if(horse_x+2 >= 0 && horse_y-1 >= 0)
		a[horse_x+2][horse_y-1] = 1;
	if(horse_x+2 >= 0 && horse_y+1 >= 0)
		a[horse_x+2][horse_y+1] = 1;
	
	a[horse_x][horse_y] = 1;
	
	if(horse_x+1 >= 0 && horse_y+2 >= 0)
		a[horse_x+1][horse_y+2] = 1;
	if(horse_x-1 >= 0 && horse_y+2 >= 0)
		a[horse_x-1][horse_y+2] = 1;
	if(horse_x-2 >= 0 && horse_y+1 >= 0)
		a[horse_x-2][horse_y+1] = 1;
	a[end_x][end_y] = 3;
	vis[0][0] = true;
	dfs(0,0);
	cout << cnt;
	return 0;
}// 8 6 0 4
// 1617
2023/2/25 09:36
加载中...