題目大意:
給出一個玩到一半的漢諾塔。叫你把所有的盤子歸到任意一根針上,求最少步數。
由于結果很大,輸出它和100000的模。
最基本的思路是動態規劃,跟一般的漢諾塔問題類似
位于任意一個狀態的漢諾塔。必然有位于最底層的最大的盤子。
最終的目的是把這個盤子移動到某根針上。
所以必然會出現的一個場景就是:
最大的盤子單獨在一根針上,其他的盤子在另外一根針上
假設:
f(n, idx) = { 將初始狀態下盤子 1~n 集中到第idx根針上所需要的最小步數 }
g(n) = { 將位于一根針上的盤子 1~n 移動到另外一根針所需要的最小步數 }
那么轉移方程就是:
f(n, idx) = {
如果盤子n位于idx:f(n - 1, idx)
否則:f(n - 1, idx)
}
從普通的漢諾塔問題上可以得出:
g(n) = 2^n - 1