汉诺塔java代码

汉诺塔应该都玩过,就是这个[img]http://image.baidu.com/i?ct=503316480&z=&tn=baiduimagedetail&word=%BA%BA%C5%B5%CB%FE%D3%CE%CF%B7&in=32144&cl=2&lm=-1&pn=3&rn=1&di=47426513640&ln=656&fr=&fmq=&ic=&s=&se=&sme=0&tab=&width=&height=&face=&is=&istype=#pn3&-1[/img],[color=red]几个木头套来套去的,小在大的上面,[/color]将他从1个棍子上弄到另外个上,小的时候玩的时候是有点挑战性,不过现在就差点了,昨天老师刚讲了他的最小移动算法,代码如下“
public static int num(int i) {
if(i == 1)
return 1;
return 1+num(i-1)*2;
}

所以就想能不能试着写下代码,试着表示如何移动,例如”1将第一根棍上编码为1的木头移动到第三根棍上“等等,还写了什么Wood,Stack等类,为他们也写了什么put,delete,isLegal方法,[color=red]最后写了大概半个小时,放弃了,我发现只能看规律,写一个方法[/color],故上网看看其他人代码,结合自己的想法完成了代码

public class Test {

public static void main(String[] args) {
print("1","3","2",3);
}
/*
* index 现在的罗汉塔的位置 初始位置是1,之后有改变
* to 罗汉塔要移动到的位置
* replace 罗汉塔备用的那根
* i 最多有多少根木头
*/
public static void print(String index,String to, String replace, int i) {
//i == 1时不解释 你懂的
if(i == 1) {
System.out.println(index + "------>" + to);
return;
}
/*
* 当i不为1时,可以考虑将所有i-1个木头放在replace上
* 所以index不变,to的位置变为replace,replace变为to
*/
print(index,replace,to,i-1);
/*
* 将第i个木头放在to上
*/
System.out.println(index + "------>" + to);
/*
*现在所有i-1个木头都在replace上,要让它去to那
*所以index变为 replace,to不变,repalce变为index
*/
print(replace,to,index,i-1);
}


}

这画图有点难所以做了个zip,[color=red]里面就一个PPT,一个word[/color][size=small][/size][size=medium][/size][size=large][/size]我怕可能只装word没ppt,所以弄了俩。内容写的很简单,应该能看懂。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值