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