漢諾塔移動步數的計算 (轉)
大家有沒有試過計算漢諾塔的移動步數?是不是算了幾天幾夜也沒有結果,而且還當機了……。現在本人找到了它的一個移動規律現與大家分享。
漢諾塔移動時,三個盤子要移動7步,這是固定的。當四個盤子時,它先要把最上面的三個盤子移動到另外一根針上(這時移動了7步),然後把第四個盤子移動到另一根針上(這時共移動了8步,三個盤子的7步加上第四個盤子的1步),最後再把那三個盤子移動到第四個盤子上面(又是7步),所以,四個盤子要移動15步。五個盤子也是同樣,我們知道了四個盤子的移動步數是15步,那麼5個盤子就是15+1+15等於31步。由此得出結論:每增加一個盤子,它的移動步數就增加原來步數的一倍加1。如:我們已經知道5個盤子移動31步,那麼,6盤子就是31*2+1=63步。
可編寫C為:
#include
void main(){
long double j=7; /*j用來記錄盤子的移動步數,因為最少為三個盤子,所 以定義初值為7*/
int i; /*i用來存放盤子的個數*/
printf("請輸入一個大於等於3,小於等於64的數:");
scanf("%d",&i);
if(i>64&&i<3){
printf("無法計算");}
else{
for(x=3;x
j=j*2+1;} /*計算移動步數的公式*/
printf("%d個盤子要移動%.0lf步",i,j);}
這樣算起來是不是簡單了很多?以上程式由於long double資料型別的精度問題最多隻能算到53個盤子的移動步數。
由以上公式得出64個盤子的移動步數為:18446744073709551615步
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-976142/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL 漢諾塔SQL
- 漢諾塔的實現
- 漢諾塔詳解
- 漢諾塔-PythonPython
- ACM 漢諾塔(三)ACM
- 奇怪的漢諾塔 - 題解
- 漢諾塔通項公式公式
- 漢諾塔和遞迴遞迴
- 百練OJ:4147:漢諾塔問題(Hanoi)——python實現漢諾塔Python
- 小知識系列(3):Hanoi塔(漢諾塔,河內塔)
- 漢諾塔遊戲《演算法很美》遊戲演算法
- hanoi漢諾塔C++實現C++
- 漢諾塔演算法演示1.0演算法
- 移動計算——網路經濟的春天 (轉)
- PHP實現漢諾塔演算法PHP演算法
- 經典遞迴解決漢諾塔!遞迴
- Python實現:漢諾塔問題Python
- 漢諾塔非遞迴演算法遞迴演算法
- 漢諾塔(hanoi) C語言實現C語言
- 遞迴實現漢諾塔問題遞迴
- 漢諾塔非遞迴棧程式碼遞迴
- 漢諾塔的圖解遞迴演算法圖解遞迴演算法
- 基於HTML5的WebGL設計漢諾塔3D遊戲HTMLWeb3D遊戲
- HT for Web 3D遊戲設計設計--漢諾塔(Towers of Hanoi)Web3D遊戲設計
- (轉)MRP的計算步驟
- C#中漢諾塔問題的遞迴解法C#遞迴
- 移動雲端計算展望
- 【YbtOJ高效進階 遞推-2】奇怪漢諾塔
- c++遞迴與迭代實現漢諾塔C++遞迴
- 從漢諾塔遊戲理解python遞迴函式遊戲Python遞迴函式
- python3:遞迴解漢諾塔問題Python遞迴
- js解決漢諾塔問題程式碼例項JS
- 化繁為簡 經典的漢諾塔遞迴問題 in Java遞迴Java
- js漢諾塔問題解決方法程式碼例項JS
- 【分治演算法】歸併排序,快速排序和漢諾塔演算法排序
- eMarketer:移動計算驅動的內容消費
- Java中計算移動平均線Java
- 雲端計算如何推動全球數字化轉型