javaSE小游戏——汉诺塔

汉诺塔问题[又称河内塔]是印度的一个古老的传说!!!!!

据传开天辟地之神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。就是这看似简单的问题,却困扰了人们千年以上。

后来,这个传说就演变为汉诺塔游戏,玩法如下:

1.有三根杆子A,B,C。A杆上有若干碟子
  2.每次移动一块碟子,小的只能叠在大的上面
   3.把所有碟子从A杆全部移到C杆上

解题思路 !!!!!!!

将n-1个圆盘按要求放在C塔,第n个圆盘放在B塔,现在A塔空。n号圆盘是最大的圆盘,按问题要求我们终于把n号最大的圆盘放在了B塔,这下借助已空的A塔联合BC塔推回来,就可以把n个圆盘按要求放在B塔。

/*
最大的问题将X上的三个盘子放到Z上
3个 X->Z
    前2个 X->Y
        前1个 X->Z
        第2个 X->Y
        前1个 Z->Y
    第3个 X->Z
    前2个 Y->Z
        前1个 Y->X
        第2个 Y->Z
        前1个 X->Z
*/

实现游戏的源代码如下 !!!!!!!!

class Text07_01{
    public static void main(String[] args){
        //盘子的个数 出发 中间 目的
        hanno(3,"X","Y","Z");
    }                                     
    public static void hanno(int n,String begin,String mid,String end){
        if(n==1){
            System.out.println(begin+" -> "+end);
        }else{
            hanno(n-1,begin,end,mid);
            System.out.println(begin+" -> "+end);
            hanno(n-1,mid,begin,end);
        }
    }
}

发布了39 篇原创文章 · 获赞 0 · 访问量 1384

猜你喜欢

转载自blog.csdn.net/qq_43199083/article/details/104290702