大吉大利,今晚吃鸡 --- 汉诺塔的变形

2023-11-11 23:30

本文主要是介绍大吉大利,今晚吃鸡 --- 汉诺塔的变形,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述
这种类型的题目,与其说是编程题不如说是数学题。

下面这段是我引用的其他博主写的题解:

对于n个盘子,我们可以把它分成n-1n−1个盘子和最后一个大盘子。
同样设F(n)F(n)为移动所需步数。
将n-1n−1个盘子借助B柱移动到C柱上,这一过程移动的步数极为F(n-1)F(n−1)
将大盘子由A柱移动到B柱上,此时需要一步
将n-1n−1个盘子借助B柱移动到A柱上,这一过程移动的步数同样为F(n-1)F(n−1)
将大盘子由B柱移动到C柱上,此时需要一步
将n-1n−1个盘子借助B柱子移动到C柱上,此时需要的步数仍为F(n-1)F(n−1)。
综合以上分析,F(n)=3F(n-1)+2F(n)=3F(n−1)+2。同样,对两边同时加上1可以凑成一个等比数列,最后求出其通项公式即为3^n-1。

很汉诺塔很类似,可以推出递推公式:
f(n)=3f(n-1)+2;
->f(n)+1=3f(n-1)+3=3(f(n-1)+1);
->f(n)=3^n-1;

需要注意的是,这题实际上是多输入输出,但他没有明说,而是说直至文件末尾。。。。

using namespace std;
#include<bits/stdc++.h>
int main(){int n;while(cin>>n){long long ans;ans=pow(3,n);cout<<ans-1<<"\n";}return 0;
}

这篇关于大吉大利,今晚吃鸡 --- 汉诺塔的变形的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/393540

相关文章

csu(背包的变形题)

题目链接 这是一道背包的变形题目。好题呀 题意:给n个怪物,m个人,每个人的魔法消耗和魔法伤害不同,求打死所有怪物所需的魔法 #include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>//#include<u>#include<map

hdu3389(阶梯博弈变形)

题意:有n个盒子,编号1----n,每个盒子内有一些小球(可以为空),选择一个盒子A,将A中的若干个球移到B中,满足条件B  < A;(A+B)%2=1;(A+B)%3=0 这是阶梯博弈的变形。 先介绍下阶梯博弈: 在一个阶梯有若干层,每层上放着一些小球,两名选手轮流选择一层上的若干(不能为0)小球从上往下移动,最后一次移动的胜出(最终状态小球都在地面上) 如上图所示,小球数目依次为

HDU 2064 汉诺塔III(水题)

题目: http://acm.hdu.edu.cn/showproblem.php?pid=2064 题目大意: 有三根杆,求把n个圆盘从左边移到右边,最少需要移动圆盘的次数。移动规则为大盘不能放在小盘上,比原始的汉诺塔题改变的地方是,只能通过中间的杆往左右两边的杆移动。 心得: 此题心得在题外,不在题内,初看此题,尼玛吓了一跳,好像很难的样子,手贱百度了一下,只注意到俩字“水题”,赶紧

跳台阶(动态规划/斐波那契变形)

跳台阶 链接:https://www.nowcoder.com/acm/contest/90/A来源:牛客网 题目描述 小明在坐景驰科技研发的无人车到达了目的地。 景驰科技(JingChi.ai)是一家由人工智能技术驱动、以无人驾驶技术为核心的智能出行公司。它将打造面向中国市场的全无人驾驶。 从无人车下来以后,小明看到了一个长长的楼梯。 有一个n级台阶的楼梯,小明一次可以向上跳1

Bellman_Ford变形求最长路+正权回路或spfa——POJ 1860

对应POJ题目:点击打开链接 Currency Exchange Time Limit: 1000MS Memory Limit: 30000KTotal Submissions: 20814 Accepted: 7451 Description Several currency exchange points are working in our city. L

[android总结]Zxing二维码扫描图片变形

关于使用ZXing扫描二维码图片变形的问题,晚上有很多种解释,但都是一个模板,经过多种尝试,还是没能解决我的问题。于是就自己研究,不过索性解决了,再次简单分享一下。 如果想在应用里添加自己的我二维码扫描功能,可以参照:http://blog.csdn.net/xiaanming/article/details/10163203   这篇博客描述的很详尽。 首先,你应该知道

【递推】【DP】-HDU-2064-汉诺塔③

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2064 题目描述:从最左边移到最右边柱子的过程中必须经过中间柱子。 解题思路: 进ACM组时候的考试题,当时虐我的题终于被我虐回来了。。一眼看出方程,1A了。。。呵呵。。满足一下我的虚荣心,,,抚慰一下受挫的心灵吧。 AC代码: #include <iostream>using names

【递推】【DP】-HDU-1996-汉诺塔⑥

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1996 题目描述:问三个柱子上放N个盘子,一共可能有多少种组合?(可以有柱子不放,放的时候依然满足下面盘子比上面盘子大) 解题思路: 对于放N个盘子,ans [ N ] = 3 + 6 * f ( N ) +6 * g ( N ) 这三项依次代表这N个盘子分成一堆,两堆,三堆时有多少种可能。排列

【递推】【DP】-HDU-1995-汉诺塔⑤

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1995 题目描述:计算汉诺塔中某个盘子的移动次数 解题思路: 想了好久,突然顿悟! 思路如下,所谓递推,即是前者与后者存在直接联系,由前者可以直接推出后者,因此必须有一端是已知的,这题里显然最下面的盘子只被动了一次,这就是开端,然后我们考虑紧挨着的两张盘子的递推关系,发现上面盘子是紧挨着的下面盘

【递推】【DP】-HDU-1207-汉诺塔②

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1207 题目描述:四柱汉诺塔 解题思路: 开始想了方程 f [ n ] = 2 * f [n - 2] + 3和 f [ n ] = 2 * f [n - 3] + 7。结果都不对,很郁闷,纠结半天之后,上网查攻略去了,啊!我就差一点了,但也是差了最为关键的一步! 正确的方程应该是: f [