Java实现汉诺塔 -- JAVA 算法学习

来源:互联网 发布:淘宝联盟怎么合并购买 编辑:程序博客网 时间:2024/05/24 11:13

呐  下图这个就是汉诺塔啦~小时候可是经常玩呢,大家都知道它的解决规则与步骤啦~那怎嚰用用代码来描绘一下呢~

分析:规则很简单,我们发现当只有一层时,我们直接可以把所有(一个)的小环移到目标柱子上,当大于2时,我们发现,我们必须先把上面的N-1层移到辅助的柱子(目标柱子以外的两个都是辅助柱子)上,才能把第N层的小环移到目标柱子,是不是发现啦~我们只需要写一个递归函数,每次把第N-1上的所有环移到辅助的柱子,这样就可以一层一层的把小环从大到小移到目标柱子了呢~~~



publicclassHanoiTest {
      privatestaticintcount=0;
      publicvoidhanoi(intn,charx,chary,charz){
            if(n==1)
                  move(1,x,z);
            else{
                  hanoi(n-1,x,z,y);
                  move(n,x,y);
                  hanoi(n-1,y,z,x);
            }
      }
      publicvoidmove(intn,chara,charb){
            count++;
            System.out.println("第"+count+"步:"+"将"+n+"从"+a+"移到"+b);
      }
      publicstaticvoidmain(String[]args) {
            System.out.println("请输入汉诺塔的高度:");
            Scannerscanner=newScanner(System.in);
            intn=scanner.nextInt();
         /*int[] hanoi1 = newint[n],hanoi2 = newint[n],hanoi3 = newint[n];
            for(inti=0;i<n;i++){
                  hanoi1[i]=i+1;
                  hanoi2[i]=0;
                  hanoi3[i]=0;
            }*/
            HanoiTesthanoiTest=newHanoiTest();
            hanoiTest.hanoi(n,'x','y','z');
      }
}
原创粉丝点击