实现具有回溯策略的递归函数 BACKTRACK( DATALIST) 一 带有说明的源程序,见附件中的文件。 二 实验用输入数据,输出结果及分析 (开始状态都是红色框, 0为空,用蓝色标识) 本程序采用深度优先搜索,依次向右 -下 -左 -上方向搜索。在步数限制不同的情况下,同一问题有不同的解,也就是在搜索过程中,限制 DataList的长度,有可能有利于尽快找到最优的解。在 DataList比较大时,一定可以找到解,但不一定是最优的。找到的解所用的步数还与搜索的顺序有关,如果不采用右 -下 -左 -上的顺序 ,也许就会有不同的结果,以下还有: 在步数限制为 30 时,它需要 29 步才可以实现,其实这个问题可以通过 19步解决 (其实 23, 27,199步等也可以 ),如下所示: 程序还可以改进,让它从步数限制内的所有解中找到最优解,但时间上更不好,所以找到解就结束,说明有解。 还有以下实验数据,都说明了以上结论: 4 2 3 6 8 5 7 0 1 ( 17, 23, 25, 27, 29等步) 4 2 3 8 1 5 7 0 6 ( 15, 21, 23, 25, 27 等步)