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

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

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

相關(guān)文章

最新評論

汽车| 和平县| 手游| 大悟县| 大渡口区| 迁西县| 望城县| 班玛县| 伊宁市| 民勤县| 榆中县| 桃源县| 西华县| 抚松县| 绵竹市| 厦门市| 阳曲县| 盈江县| 阿鲁科尔沁旗| 华宁县| 项城市| 施甸县| 临澧县| 治多县| 双辽市| 茂名市| 龙口市| 湾仔区| 河源市| 湖南省| 台北市| 苏州市| 东山县| 汨罗市| 南川市| 石嘴山市| 清镇市| 凯里市| 威宁| 涿鹿县| 深水埗区|