跳马周游c++_汉诺塔,n皇后,跳马问题汇总

这篇博客总结了软件课中的递归、回溯和搜索问题,包括汉诺塔的递归和非递归实现、n皇后问题的搜索策略及剪枝,以及跳马问题的解决方案。通过递归边界、解答树分析和辅助空间变化,阐述了如何解决这些经典问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

软件课讲了这些问题,这次顺便总结下。

说白了也就是:递归,回溯,深搜或者广搜。

1.汉诺塔

/*

汉诺塔

题目:

假设有A, B, C 3个轴,有n个直径各不相同,

从小到大依次编号为1,2,3,…,n的圆盘

按照从小到大的顺序叠放在A轴上。现在要求

将这n个圆盘移至C轴上并仍然按照同样顺序

叠放,但圆盘移动时必须遵守下列规则:

1.每次只能移动一个圆盘,它必须位于某个

轴的顶部。

2.圆盘可以插在A,B,C中任一轴上。

3.任何时刻都不能将一个较大的圆盘压在较小

的圆盘之上。

*/

///

经典的问题,属于递归的入门级问题,但是同样不好分析,在n<=4以内还可以模拟下汉诺塔的实现,当n>=5时就不太现实了,让我们来看看汉诺塔当圆盘个数n时有多少组解? 按照传说来看:n=64,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。

但是这毕竟是神话,不过当把64个金片全部放到另外一根针时,确实要很长很长一段时间。

让我们来看看需要多长时间。

首先,我们找出递推关系:

f(n + 1) = 2*f(n) + 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值