河内塔没有直接从dist移动​​到临时

时间:2015-09-26 23:42:56

标签: algorithm towers-of-hanoi

考虑一下原来的河内塔问题还有一个额外的条件:

  • 如果您有3极A,B和C,则不允许将光盘直接从A移动到B或B到A

这意味着从着名的递归解决方案来看,我们不允许从温度或温度开始移动。

void hanoi(int n, char start, char temp, char finish){
    if (n== 1)
        cout << start << " -> " << finish;
    else {
        hanoi(n - 1, start, finish, temp);
        cout << start << " -> " << finish;
        hanoi(n - 1, temp, start, finish);
    }
}

任何人都可以帮我找到解决方案吗?

1 个答案:

答案 0 :(得分:0)

不是直接从A移动到B,而是执行中间移动A-> C-> B。如果实现是正确的,那么应该始终可以这样做。