在该项目中 假设给定了下图中的二维数组,按照上述移动要求找到一个符合的数字序列
采用回溯法 ,首先给出目标序列的长度,定义一 个 长度计数单位(假定为 n) 每当按顺序找到了一个目标数字,n++ ,当n达到了目标序列的长度时,代表 已经 成功找到序列,返回成功
具体实现
首先需要找到入口点,即遍历整个数组 ,找到与序列第一个数字相同的位置,将这个位置传入find函数。
在find函数中 试图对 该位置的上下左右 (中没有被访问的位置) 进行查找 ,如果遇到在其上下左右 中发现了一个数字a 与目标序列中的第二位相同 ,即对该新发现的数字 进行上下左右的位置进行查找 ,直到完全查找结束,如果 a不能找到目标序列的第三位数字,那么对a进行回溯 ,将a置为 已访问 ,返回入口点 ,继续查找有没有 能够满足的 位置 ,依次推进
代码实现
寻找接入点 :
for(int i=0;i<4;i++) {
for(int j=0 ;j<4;j++) {
if(findpath(isvistied,0,i,j,index,x)) {