骑士走棋盘:等价于中国象棋中马走日
算法思路:骑士所要走的下一步:为下一步再做选择时,选择能走的步数最少的一步。使用这个方法,在不使用递归的情况下,可以有较高的几率找出走法(有时可能也找不到走法)。
C代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int traval(int x, int y);
int board[8][8] = { 0 };
int main()
{
int startX, startY;//起点
int i, j;
printf("please input startpoint:");
scanf("%d%d", &startX, &startY);
if (traval(startX, startY))
{
printf("success\n");
for (i = 0; i < 8; i++)
{
for (j = 0; j < 8; j++)
{
printf("%3d", board[i][j]);
}
printf("\n");
}
}
else
printf("fail");
system("pause");
}
int traval(int x, int y)
{
int move_x[8] = { -2, -1, 1, 2, 2, 1, -1, -2 }; //可移动的八个方向
int move_y[8] = { 1, 2, 2, 1,