国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java數據結構及算法實例:漢諾塔問題 Hanoi

2019-11-26 15:08:02
字體:
來源:轉載
供稿:網友
/**  * 漢諾塔大學的時候就學過,但是根本沒搞明白,唯一知道的就是要用遞歸的方法來求解。  * 問題描述:  * 有三根桿子A,B,C。A桿上有N個(N>1)穿孔圓盤,盤的尺寸由下到上依次變小。  * 要求按下列規則將所有圓盤移至C桿:  * 1.每次只能移動一個圓盤;  * 2.大盤不能疊在小盤上面。  * 提示:可將圓盤臨時置于B桿,也可將從A桿移出的圓盤重新移回A桿,  * 但都必須尊循上述兩條規則。  * 問:如何移?最少要移動多少次?  * 解決方法:  * 假設只有2個盤子,柱子分別是A, B, C柱。那么只需要三步就可以把他們從A柱移到C柱,  * 這三步是A->B, A->C, B->C。  * 如果盤子數n超過2呢,我們就可以把這些盤子看成由最下面的那個盤子和 上面n-1個盤子 兩部分,  * 這兩部分同樣可以用上面的三步實現移動。  * 也就是說我們可以通過遞歸地調用上面的步驟實現將所有n個盤子從A柱移動到C柱。  */ package al; public class Hanoi {      public static void main(String[] args) {          Hanoi hanoi = new Hanoi();     hanoi.move(3, 'A', 'B', 'C');   }      /**    * @author    * @param n 盤子數目    * @param from 起始柱子    * @param temp 中間柱子    * @param to 目標柱子    */   public void move(int n, char from, char temp, char to) {     if(n == 1) {       System.out.println("Move 1 plate from " + from + " to " + to);     } else {       move(n-1, from, to, temp);       move(1, from, temp, to);       move(n-1, temp, from, to);     }   } } 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 湘潭县| 民和| 保定市| 三门县| 新乡县| 顺昌县| 高邮市| 富蕴县| 宁陕县| 河津市| 兴山县| 洱源县| 桓台县| 普宁市| 万山特区| 通许县| 佛山市| 双牌县| 竹山县| 潞城市| 灵武市| 东乡族自治县| 安陆市| 武山县| 岑溪市| 栖霞市| 开平市| 祁门县| 北京市| 株洲市| 亳州市| 平原县| 平远县| 延津县| 周口市| 明水县| 嘉黎县| 馆陶县| 鹰潭市| 伊通| 神池县|