日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

时隔七个月,我终于弄懂了汉诺塔的思想

發(fā)布時間:2024/10/14 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 时隔七个月,我终于弄懂了汉诺塔的思想 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄
1.問題描述
2.漢諾塔的分析
3.博主的反思
4.代碼詳解

  • 博主在大一的上學(xué)期開學(xué)沒多久看的漢諾塔,在看的過程中,很多地方似懂非懂,但是博主當(dāng)時沒有細(xì)品,便匆匆跳過,直到最近感覺自己遞歸學(xué)的不行便又復(fù)習(xí)一下,果然有了很多的收獲

1.問題描述

在印度,有這么一個古老的傳說:在世界中心貝拿勒斯(在印度北部)的圣廟里,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創(chuàng)造世界的時候,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔。不論白天黑夜,總有一個僧侶在按照下面的法則移動這些金片,1. 一次只移動一片; 2. 不管在哪根針上,小片必在大片上面。當(dāng)所有的金片都從梵天穿好的那根針上移到另外一概針上時,世界就將在一聲霹靂中消滅,梵塔、廟宇和眾生都將同歸于盡。

2.漢諾塔的分析

假設(shè)我們要把A柱子上的金片移動到B柱子上。如果漢諾塔的A柱子有2個金片,那么就是把最上邊的哪一個金片移動V柱子上,再把A上面的另一個金片移動到B柱子上,再把V柱子上的金片移動到B柱子上,就完成了工作。

如果有3個就是把上邊的第一個金片(最小的)放在B柱子上,第二個金片放在V柱子上,再把第一個金片從B柱子移動到V柱子上,然后把第三個金片(最大的金片)放在B柱子上,再把V柱子上的第一塊金片放在A柱子上,再把V柱子上的第二塊金片放在B柱子上,最后把A柱子上的第一片金片放在B柱子上,就完成了工作

其實仔細(xì)想想只要兩個或者兩個以上的金片都可以這么看,假如有n(n>=2)個金片,那么其實就只有三步,第一步把上面n-1個金片從A柱子放在V柱子上,把最大的金片放在B柱子上,最后把V柱子上的n-1塊金片移動到B柱子上,這就完成了(我們先不管他怎么實現(xiàn)把n-1塊金片從一個柱子移動到另一個柱子)。我們把做完第二步的狀態(tài)分析一下:此時,最大的金片在B柱子上,n-1塊金片在V柱子上,由于B柱子上是最大金塊,所以可以把B柱子上的金塊看作沒有(其他n-1塊金片都比他小,都能放在這塊最大的金片的上面),那么此時又回到了原來的問題,現(xiàn)在是只有n-1塊金片把它從V柱子移動到B柱子上(只是金片所在的初始位置的柱子變了而已),依次類推,是不是重復(fù)了n次同樣的操作把所有的金片從A柱子移動到了B柱子

3.博主在學(xué)習(xí)漢諾塔遇到的問題

博主比較笨,主要是博主過分的把重心放在代碼的實現(xiàn)上,導(dǎo)致博主剛開始看的時候無法理解,但是漢諾塔遞歸其實就是重復(fù)做一件事情,我們不用去管它到底是怎樣把B柱子作為輔助,把n-1塊金片從A柱子移動到V柱子上,這是遞歸內(nèi)部的實現(xiàn),我們只需要知道他就是在做同一件事情就行

4.代碼詳解

#include<stdio.h> int hanio(int n,char A,char V,char B) {if(n==1)printf("%c->%c\n",A,B);else{hanio(n-1,A,B,V);//把A柱子的n-1塊金片移動到Vprintf("%c->%c\n",A,B);//最大的那一塊金片移動到Bhanio(n-1,V,A,B);//把V柱子的n-1塊金片移動到B} } int main() {hanio(2,'A','V','B'); }

運行結(jié)果

總結(jié)

以上是生活随笔為你收集整理的时隔七个月,我终于弄懂了汉诺塔的思想的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。