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