一、 问题描述
二、算法思想
这是一个典型的深度优先搜索问题。
首先,我们创建一个m×n的棋盘,并初始化所有的点为未访问状态。
然后,我们从(0, 0)位置开始进行深度优先搜索。
在每一步中,我们先标记当前位置为已访问,然后检查当前位置的四个可能的下一步位置,即(1, 2)、(2, 1)、(-1, 2)、(-2, 1)、(1, -2)、(2, -1)、(-1, -2)、(-2, -1)。对于每个下一步位置,如果它在棋盘范围内并且还未被访问过,我们继续以该下一步位置为当前位置进行深度优先搜索。
当我们访问到达棋盘上的最后一个点时,说明找到了一条完整的路径,我们将路径数加一。
最后,我们返回路径数作为结果。
三、代码实现
#include <stdio.h>
#define MAX 8
int moves[8][2] = {
{2, 1}, {1, 2}, {-1, 2}, {-2, 1},