大家知道简单的汉诺塔怎么做吗?
有个公式对吧
就是 2 n − 1 2^n-1 2n−1
操作就是将第一个柱子除底盘外的移到第二个柱子,然后把底盘移到第三个柱子,然后把第二个柱子的盘子移动到第三个
但基本的汉诺塔问题的操作是没有限制的,就是你想移哪儿移哪儿,但是这题不一样,这题强制了一个操作优先级,所以要用不同的方法去做。
f[x][i]: 第x号柱子移i个盘子到最优柱子的最优解
p[x][i]:第x号柱子移i个盘子到p[x][i]号柱子是最优解
那么就有两种情况,第一种就是普通的汉诺塔移动
也就是上面所讲的:
f [ a ] [ i ] = f [ a ] [ i − 1 ] + 1 + f [ b ] [ i − 1 ] ; f[a][i]=f[a][i-1]+1+f[b][i-1]; f[a][i]=f[a][i−1]+1+f[b][i−