汉诺塔问题

目标:将A上面的方块移动到C上面 并且不能将大的方块落到小的方块上面
注意:灵魂画手已出现
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述共经历了七部
大中小 ---- 123
一个盘子:大到3
两个盘子:小到2 大到3 小到3
三个盘子:小到3 中到2 小到2 大到3 小到1 中到3 小到3
以此类推:
总移动步数:2**n - 1
大于三个盘子:可以理解成一个整体 然后按照两个盘子去思考
在这里插入图片描述

	public static void hanoi(int num, int start, int mid, int end) {
		if (num == 1) {
			System.out.println(start + "--->" + end);
		} else {
			hanoi(num - 1, start, end, mid);
			System.out.println(start + "--->" + end);
			hanoi(num - 1, mid, start, end);
		}
	}
	

盘子再多 我们就把他简化成两个 去看待
当num-1个盘子放到中间未知的时候 我们就把中间的柱子看做第一个继续去进行

		hanoi(1, 11, 22, 33);
   	System.out.println("========");
   	hanoi(2, 11, 22, 33);
   	System.out.println("========");	
   	hanoi(3, 11, 22, 33);

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值