当前位置: 代码迷 >> 综合 >> JAVA学习—Hanoi 塔问题—2021-06-15
  详细解决方案

JAVA学习—Hanoi 塔问题—2021-06-15

热度:35   发布时间:2024-01-17 16:47:20.0

JAVA学习—Hanoi 塔问题—2021-06-15

Hanoi 塔问题

这个问题起源于一个类似传说故事,在Hanoi这个地方有一个寺庙,这里有3根柱子和64个大小不同的金碟子。每个碟子有一个孔可以穿过。所有的碟子都放在第一个柱子上,而且按照从上到下碟子的大小依次增大的顺序摆设。如下图:

现在,假定寺庙里的僧侣要移动这些碟子,将它们从最左边移动到最右边的柱子上。不过移动的规则如下:
在这里插入图片描述

1.每次只能从一个柱子的最上面移动一个碟子到另外一个柱子上。

2.不能将大碟子放到小碟子的上面。

按照前面这个规则,我们该怎么去移动这些碟子呢?假定单位时间内可以移动一片碟子,那么最终移动这些碟子到目的柱子需要多长的时间呢?

代码

package datastructure.tree;/*** Hanoi tower.* * @author hengyuzuo.*/
public class Hanoi {
    /************************ Move a number of plates.* * @param paraSource* The source pole.* @param paraIntermedium* The intermediary pole.* @param paraDestination* The destination pole.* @param paraNumber* The number of plates.**********************/public static void hanoi(char paraSource, char paraIntermediary, char paraDestination,int paraNumber) {
    if (paraNumber == 1) {
    System.out.println(paraSource + "->" + paraDestination + " ");return;} // Of ifhanoi(paraSource, paraDestination, paraIntermediary, paraNumber - 1);System.out.println(paraSource + "->" + paraDestination + " ");hanoi(paraIntermediary, paraSource, paraDestination, paraNumber - 1);}// Of hanoi/************************ The entrance of the program.* * @param args* Not used now.**********************/public static void main(String args[]) {
    hanoi('a', 'b', 'c', 3);}// Of main
}// Of class Hanoi
  相关解决方案