我贴的答案是后来优化过的。
在主循环中,记录全局最优节点,也就是score最小的。
然后
if (node->gen - best->gen >15 && node->score > best->score)
continue;
就是如果比最优节点多走了15步,还不如最优解点,就不再搜索这个分支。
这时候只要52步就能完成。
我把剪枝额步数跳到14, 就反而要60步。
如果再少, 可能就把正确的路径都剪掉了, 出不来答案了。
【 在 here080 的大作中提到: 】
: 为啥你算出来才60步?我把你的程序用C++重写了一下,算出来要100步……
: 这个结果是秒出的,但是如果我把搜索深度限定在80以内,那我搜了几千万个结点也出不了结果。
: Start Searching =========================
: ...................
--
FROM 123.112.64.*