题目1458:汉诺塔III
来源:互联网 发布:淘宝不清洗订单会怎样 编辑:程序博客网 时间:2024/06/10 03:35
// 与原始汉诺塔不同,这里对圆盘的移动做了更多的限制,即每次只允许将圆盘移动到中间柱子上,或从中间柱子上移出,而不允许由第一根柱子直接移动到第三根柱子
// 若移动K个圆盘从第一根柱子到第三根柱子需要F[K]次移动,那么,先移动K-1个圆盘道第三根柱子需要F[K-1]次移动,再将最大的圆盘移动到中间柱子需要1次移动,然后将K-1个圆盘移动回第一根柱子同样需要F[K-1]次移动,移动最大的盘子到第三根柱子需要1次移动,最后将K-1个圆盘也移动到第三根柱子需要F[K-1]次移动,这样递归公式就是F[K]=3*F(K-1)+2。而递归的出口是K=1时,F[1]=2
#include<stdio.h>
#include<string.h>long long F(int num){ // 递归函数,返回值较大使用long long类型
if(num==1) return 2;
else return 3*F(num-1)+2;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF){
printf("%lld\n",F(n));
}
return 0;
}
0 0
- 题目1458:汉诺塔III
- 题目1458:汉诺塔III
- 题目1458:汉诺塔III
- 题目1458:汉诺塔III
- 题目1458:汉诺塔III
- 题目1458:汉诺塔III
- 题目1458:汉诺塔III(递归使用)
- 题目88:汉诺塔III
- 题目:主元素 III
- JD 1458:汉诺塔III
- 汉诺塔III
- 汉诺塔III
- 汉诺塔III
- 汉诺塔III
- 汉诺塔III
- 汉诺塔III
- 汉诺塔III
- 汉诺塔III
- windows键盘快捷键
- canny 算子检测图像边缘 C++程序问题探究
- SQLyogEnt.exe[5232]中发生未处理的win32异常
- ubuntu 运行程序内存不够的处理方法
- 树莓派3/A20 Bootloader加载过程分析
- 题目1458:汉诺塔III
- IE 兼容性问题记录
- ThinkPad E520下CentOS 6.2配置指南 --安装无线网卡RTL8188CE驱动、ATI6630显卡驱动、配置更新源、挂载NTFS
- 连续子数组的最大和
- SQL中使用WITH AS提高性能-使用公用表表达式(CTE)简化嵌套SQL
- SQL学习笔记
- oracle 多个字段去重复
- 控制台计算器(类,枚举,继承)
- C++库一览