最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java數(shù)據(jù)結構及算法實例:漢諾塔問題 Hanoi

 更新時間:2015年06月20日 11:17:32   投稿:junjie  
這篇文章主要介紹了Java數(shù)據(jù)結構及算法實例:漢諾塔問題 Hanoi,本文直接給出實現(xiàn)代碼,代碼中包含大量注釋,需要的朋友可以參考下
/** 
 * 漢諾塔大學的時候就學過,但是根本沒搞明白,唯一知道的就是要用遞歸的方法來求解。 
 * 問題描述: 
 * 有三根桿子A,B,C。A桿上有N個(N>1)穿孔圓盤,盤的尺寸由下到上依次變小。 
 * 要求按下列規(guī)則將所有圓盤移至C桿: 
 * 1.每次只能移動一個圓盤; 
 * 2.大盤不能疊在小盤上面。 
 * 提示:可將圓盤臨時置于B桿,也可將從A桿移出的圓盤重新移回A桿, 
 * 但都必須尊循上述兩條規(guī)則。 
 * 問:如何移?最少要移動多少次? 
 * 解決方法: 
 * 假設只有2個盤子,柱子分別是A, B, C柱。那么只需要三步就可以把他們從A柱移到C柱, 
 * 這三步是A->B, A->C, B->C。 
 * 如果盤子數(shù)n超過2呢,我們就可以把這些盤子看成由最下面的那個盤子和 上面n-1個盤子 兩部分, 
 * 這兩部分同樣可以用上面的三步實現(xiàn)移動。 
 * 也就是說我們可以通過遞歸地調用上面的步驟實現(xiàn)將所有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 盤子數(shù)目 
   * @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); 
    } 
  } 
} 

相關文章

最新評論

措美县| 连云港市| 北安市| 彰化县| 乌海市| 许昌市| 华容县| 凤冈县| 重庆市| 凤山市| 禄丰县| 丹凤县| 和政县| 佛学| 额敏县| 美姑县| 永川市| 云梦县| 达拉特旗| 准格尔旗| 庆阳市| 荆门市| 论坛| 镇坪县| 民权县| 根河市| 隆昌县| 阳泉市| 罗甸县| 铜山县| 凌云县| 玛沁县| 海城市| 恩施市| 西盟| 烟台市| 施秉县| 盱眙县| 高密市| 基隆市| 白沙|