5X5棋盘马走日问题的解的数量

//5X5棋盘马走日问题的解的数量
#include<stdio.h>

int steps = 0;
int result = 0;
int axis_x[] = { 1,1,2,2,-1,-1,-2,-2 };
int axis_y[] = { 2,-2,1,-1,2,-2,1,-1 };
int grid[5][5] = {
	{0,0,0,0,0},
	{0,0,0,0,0},
	{0,0,0,0,0},
	{0,0,0,0,0},
	{0,0,0,0,0}
};

bool isAvailable(int x, int y) {
	if (x < 1)
		return false;
	if (x > 5)
		return false;
	if (y < 1)
		return false;
	if (y > 5)
		return false;
	if (grid[x][y] == 1)
		return false;
	return true;
}
void findnext(int x, int y) {
	for (int i = 0; i < 8; i++) {
		if (isAvailable(x + axis_x[i], y + axis_y[i])) {
			grid[x + axis_x[i]][y + axis_y[i]] = 1;
			steps++;
			if (steps == 25)
				result++;
			findnext(x + axis_x[i], y + axis_y[i]);
			steps--;
			grid[x + axis_x[i]][y + axis_y[i]] = 0;
		}
	}
}

猜你喜欢

转载自blog.csdn.net/qq_39197960/article/details/88054993