一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java數據結構及算法實例:漢諾塔問題 Hanoi

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

2019-12-24 13:03junjie JAVA教程

這篇文章主要介紹了Java數據結構及算法實例:漢諾塔問題 Hanoi,本文直接給出實現代碼,代碼中包含大量注釋,需要的朋友可以參考下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/**
 * 漢諾塔大學的時候就學過,但是根本沒搞明白,唯一知道的就是要用遞歸的方法來求解。
 * 問題描述:
 * 有三根桿子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);
    }
  }
}

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 被强上后我成瘾了小说 | 99热最新| 华人在线京东热 | 精品一区二区免费视频蜜桃网 | 教师波多野结衣在线播放 | 思思99热久久精品在2019线 | 亚洲精品卡1卡二卡3卡四卡 | 国产亚洲精品一区在线播 | 国产精品第3页 | 日韩欧美国产一区 | 国产精品嫩草影院一二三区入口 | 久久偷拍国2017的 | 百合女女师生play黄肉黄 | 四虎影视4hu最新地址在线884 | 1024国产高清精品推荐 | 国产精品第1页在线播放 | 成人福利网 | 99热这里只有精品在线观看 | 丝瓜香蕉视频 | 人人澡 人人澡碰人人看软件 | 四虎1515hhc0m | 亚洲高清在线视频 | 国产一区二区免费不卡在线播放 | 2021国产麻豆剧传媒新片 | 亚洲第一国产 | 亚洲精品在线免费看 | 青青青青青国产费线在线观看 | 国产福利在线观看91精品 | 99re热| 美国雪白人妖sarina | 男人和女人全黄一级毛片 | 99在线观看视频免费精品9 | 91制片厂制作果冻传媒破解 | 欧美日韩在线一区 | 欧美一区二区三区精品影视 | 激情视频图片小说qvdo | 午夜勾魂曲| 公妇乱淫在线播放免费观看 | 久久成人亚洲 | 欧美伦理影院 | 亚洲成人免费观看 |