【找回数学的感觉】1 再版汉诺塔等

尤其在学过函数式编程之后,更加觉得想在计算机技术上上一个台阶必须得有非常扎实的数学基础。然而太多学生大学开始就慢慢淡忘了数学,和高中比起来根本不是一个境界。于是我决心开设这样一个系列,我每天都会练习,也会更新上博客,也希望大家能够每天练习,毕竟每天都有人推送题目^_^

独立思考是一个非常好的习惯,也希望大家能够拥有它,我虽然会在题目后搭上答案,但肯定不如你通过自己的思考学到的多,而且我写下来的肯定也不如各自思考大脑中想到的多。

第一题

这里写图片描述

我们的目标是将A中的整个塔移到C中,每次只移动一个圆盘,且较大的圆盘在移动过程中不能放置在较小的圆盘上面。圆盘数量为n。

这问题叫做河内塔问题,也称为汉诺塔。

以上的问题,大家想必都见过了,此处自然不会如此简单。

那么,此处的问题是:将n个圆盘从桩柱A移动到桩柱C,但不允许在A和C之间直接移动,也就是说每一次移动都要移动到中间的桩柱B或从桩柱B移出。求最短的移动序列。

第二题

平面上有n条直接定义的某些区域是无界的,而另一些区域是有界的。有界区域的 最大个数是多少?

这里写图片描述

如图所示,上过色的地方是有界的。

欢迎大家在评论处展开讨论,随着该系列的继续下去,难度也会慢慢增加的哦。

答案

第一题

T0=0
T1=T0+1+T0+1+

  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: 离散数学的四柱汉诺塔问题是一个经典的递归问题。在传统的三柱汉诺塔问题,我们有三根柱子:起始柱(A),辅助柱(B)和目标柱(C)。而在四柱汉诺塔问题,我们有四根柱子:起始柱(A),间柱(B),辅助柱(C)和目标柱(D)。 找到四柱汉诺塔问题的k可以通过递归的方式来解决,具体的步骤如下: 1. 首先,我们需要明确的是在三柱汉诺塔问题,我们将移动n个盘子需要进行2^n - 1次移动。在四柱汉诺塔问题,我们需要进行k次移动。 2. 当n=1时,只有一个盘子需要移动。我们可以直接将它从起始柱A移动到目标柱D,完成第一次移动。 3. 当n>1时,我们可以将问题分解为多个子问题。每次将n个盘子分成两部分:第一部分由1个盘子组成,第二部分由n-1个盘子组成。我们需要进行k次移动。首先将n-1个盘子通过递归的方式从A柱移到C柱上,完成k次移动。然后,将第k次移动时的盘子从A柱移到D柱,完成第k次移动。再将n-1个盘子从C柱移回到A柱上,完成k次移动。最后将第k次移动时的盘子从D柱移到C柱上,完成最后一次移动。 4. 如此递归下去,直到n=1时,问题得以解决。 综上所述,我们可以通过递归的方式来解决四柱汉诺塔问题,并找到k次移动的方法。 ### 回答2: 离散数学,四柱汉诺塔是一种将圆盘从一根柱子移动到另一根柱子的数学问题。在四柱汉诺塔,我们有四根柱子,标记为A、B、C、D,以及n个不同大小的圆盘,初始状态下所有的圆盘都在柱子A上。 想要找到四柱汉诺塔的k,我们可以借助递归思想进行分析。假设目标是将n个圆盘从柱子A移动到柱子B上。首先,我们可以将这个问题简化为将n-1个圆盘从柱子A移动到柱子C上,同时保持柱子D为空柱子。 接下来,我们将n号圆盘从柱子A移动到柱子D上,以便为后续操作让出空间。然后,我们将n-1个圆盘从柱子C移动到柱子D上,同时保持柱子B为空柱子。 最后,我们将n号圆盘从柱子D移动到柱子B上。至此,我们成功将n个圆盘从柱子A移动到柱子B上。 通过以上的递归思想,我们可以找到四柱汉诺塔的k。具体步骤如下: 1. 当n=1时,直接将圆盘从柱子A移动到柱子B上,此时k=1。 2. 当n>1时,将n-1个圆盘从柱子A移动到柱子C上,同时保持柱子D为空柱子。此时,k为n-1个圆盘的汉诺塔问题的k。 3. 将n号圆盘从柱子A移动到柱子D上,此时k增加1。 4. 将n-1个圆盘从柱子C移动到柱子D上,同时保持柱子B为空柱子。此时,k为n-1个圆盘的汉诺塔问题的k。 5. 将n号圆盘从柱子D移动到柱子B上,此时k增加1。 根据以上的步骤,我们可以找到四柱汉诺塔的k。 ### 回答3: 离散数学的四柱汉诺塔问题是指在四个柱子上将一堆盘子从柱子A移动到柱子D,其每个盘子的大小都不同,且较大的盘子不能放在较小的盘子上面。要找到这个问题的k,我们可以使用递归的方法来解决。 首先,我们需要理解汉诺塔问题的递推关系。对于n个盘子的汉诺塔问题,我们可以将其划分为两个子问题:将n-1个盘子从柱子A移动到柱子C,再将第n个盘子从柱子A移动到柱子D,最后将n-1个盘子从柱子C移动到柱子D。这里,我们可以将移动过程看作一个递归过程。 对于四柱汉诺塔问题,我们可以将其划分为三个子问题:将n-1个盘子从柱子A移动到柱子C,再将第n个盘子从柱子A移动到柱子D,最后将n-1个盘子从柱子C移动到柱子D。因此,我们可以得到递推公式如下: F(n) = 2F(n-1) + 1 其,F(n)表示n个盘子的最少移动次数。通过这个递推公式,我们可以求解出每个n值对应的最少移动次数。 具体来说,我们可以使用循环来计算F(n)的值。当n等于1时,F(n)等于1;当n大于1时,使用循环从n-1开始递减计算F(n)的值,直到n递减至1为止。最后得到的F(n)即为所求的k。 总结起来,离散数学四柱汉诺塔问题的k值可以通过递推关系 F(n) = 2F(n-1) + 1 计算得出,其n为盘子的数量。通过循环计算可以求解出每个n值对应的最少移动次数,进而找到k值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值