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

软件课讲了这些问题,这次顺便总结下。说白了也就是:递归,回溯,深搜或者广搜。1.汉诺塔/////////////////////////////////////////////////*汉诺塔题目:假设有A, B, C 3个轴,有n个直径各不相同,从小到大依次编号为1,2,3,…,n的圆盘按照从小到大的顺序叠放在A轴上。现在要求将这n个圆盘移至C轴上并仍然按照同样顺序叠放,但圆盘移动时必须遵守下列...
摘要由CSDN通过智能技术生成

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值