96. 奇怪的汉诺塔【递推】
生活随笔
收集整理的這篇文章主要介紹了
96. 奇怪的汉诺塔【递推】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這是一道很經典的問題。
先看3個塔的情況
需要注意的是,這里的漢諾塔移動并無只可以移動到相鄰塔的需求。即可以直接從A移到C。
設d[i]表示將i個盤子從這里移到其他除它之外塔的步數 ,總塔的數量為3
故d[i]=d[i-1]+d[i-1]+1 即將i-1個盤子移到B,將i號盤子移動C,再將i-1個盤子從B移到C
接下來分析4個塔的情況
設f[i]表示將i個盤子從這里移到其他除它之外塔的步數,總塔的數量為4
f[i]=min(f[i],f[j]+f[j]+d[i-j]) 將j個盤子移到一個柱子,此時的j個盤子已經占了一個柱子,故剩余的i-j個盤子按照三個盤子的套路移動到D,再將j個盤子弄到D
這里都是f[j]是因為,移開的時候好分析,有三個柱子可以用,回來的時候因為我們排好的盤子在D柱子已經是大的盤子,故不影響還是f[j]
總結
以上是生活随笔為你收集整理的96. 奇怪的汉诺塔【递推】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 95. 费解的开关【二级制枚举】
- 下一篇: 100. 增减序列【差分 / 思维】