您的位置:首页 > 编程语言 > Java开发

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

2017-08-17 15:02 337 查看
[align=left][/align]
[align=left]呐  下图这个就是汉诺塔啦~小时候可是经常玩呢,大家都知道它的解决规则与步骤啦~那怎嚰用用代码来描绘一下呢~[/align]




[align=left]分析:规则很简单,我们发现当只有一层时,我们直接可以把所有(一个)的小环移到目标柱子上,当大于2时,我们发现,我们必须先把上面的N-1层移到辅助的柱子(目标柱子以外的两个都是辅助柱子)上,才能把第N层的小环移到目标柱子,是不是发现啦~我们只需要写一个递归函数,每次把第N-1上的所有环移到辅助的柱子,这样就可以一层一层的把小环从大到小移到目标柱子了呢~~~[/align]
[align=left][/align]
[align=left][/align]
[align=left][/align]
publicclassHanoiTest
{
[align=left]      privatestaticintcount=0;[/align]
[align=left]      publicvoidhanoi(intn,charx,chary,charz){[/align]
[align=left]            if(n==1)[/align]
[align=left]                  move(1,x,z);[/align]
[align=left]            else{[/align]
[align=left]                  hanoi(n-1,x,z,y);[/align]
[align=left]                  move(n,x,y);[/align]
                  hanoi(n-1,y,z,
dd97
x);
[align=left]            }[/align]
[align=left]      }[/align]
[align=left]      publicvoidmove(intn,chara,charb){[/align]
[align=left]            count++;[/align]
[align=left]            System.out.println("第"+count+"步:"+"将"+n+"从"+a+"移到"+b);[/align]
[align=left]      }[/align]
      publicstaticvoidmain(String[]args)
{
[align=left]            System.out.println("请输入汉诺塔的高度:");[/align]
[align=left]            Scannerscanner=newScanner(System.in);[/align]
[align=left]            intn=scanner.nextInt();[/align]
         /*int[]
hanoi1 = newint
,hanoi2 = newint
,hanoi3 = newint
;
[align=left]            for(inti=0;i<n;i++){[/align]
[align=left]                  hanoi1[i]=i+1;[/align]
[align=left]                  hanoi2[i]=0;[/align]
[align=left]                  hanoi3[i]=0;[/align]
[align=left]            }*/[/align]
[align=left]            HanoiTesthanoiTest=newHanoiTest();[/align]
[align=left]            hanoiTest.hanoi(n,'x','y','z');[/align]
[align=left]      }[/align]
[align=left]}[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JAVA 算法 汉诺塔