7-6 双汉诺塔问题
双Hanoi塔问题是Hanoi塔问题的一种推广:有三根A、B、C三根柱子,现有n对直径大小不同的圆盘(同一对的两个圆盘直径相同),这些圆盘按照直径从大到小的次序从下到上放在A柱上,如果把1个圆盘从从一根柱子移动到另外一根柱子称作1次移动,在移动过程中允许借用B柱子,但不允许大圆盘放在小圆盘上面,每次只能移动一个圆盘。现在要用最少的步数把这些圆盘全部移到C柱,请设计一个算法求出最少移动次数。
输入格式:
一个正整数n(1≤n≤200),表示有n对圆盘。
输出格式:
输出最少的移动次数。
输入样例:
2
输出样例:
6
普通的汉诺塔有公式:输入n,需要2^n-1次.
双汉诺塔同理:输入n,需要2*(2^n-1)因此需要循环2^(n-1)次
因结果数据过大会产生乱码,这里使用数组存结果每一位的高精度形式。
#include<iostream>
using namespace std;
static int a[1000];
void hanoi()
{int cnt=0;for(int i=0;i<1000;i++){a[i]=a[i]*2+cnt;cnt=0;if(a[i]>=10){a[i]-=10;cnt=1;}}
}
int main()
{int n;cin>>n;a[0]=1;for(int i=0;i<n+1;i++)hanoi();a[0]-=2;int cnt=0,fare=0;while(a[cnt]<0){a[cnt]+=10;a[++cnt]-=1;}for(int i=999;i>=0;i--){if(fare==0&&a[i]!=0)fare=1;if(fare)cout<<a[i];}return 0;
}
7-6 双汉诺塔问题相关推荐
- Ka的递归编程练习 Part4|Hanoi汉诺塔,双色汉诺塔的也有
1 #include <stdio.h> 2 void hanoi(int s,char a,char b,char c) //a是出发盘,b是中途盘,c是结束盘 3 { 4 if(s== ...
- 汉诺塔(hanoi)、双色汉诺塔(分离型)、三色汉诺塔
汉诺塔 汉诺塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时北越的首都,即现在的胡志明市:1883年法国数学家Edouard Luca ...
- 双色汉诺塔算法的证明——数学归纳法
数学归纳法 我们先来了解一下数学归纳法(这个我高中的时候数学有选修的,可惜老师没讲,但是我自己还是自学了的) 数学归纳法(Mathematical Induction, MI)是一种数学证明方法,通常 ...
- “双色河内塔”算法(双色汉诺塔)
问题引入 "双色河内塔"由"河内之塔"的规则衍生而来(点击查看),区别在于双色河内塔的目的是将图1所示的圆盘位置,移动成为图2所示的圆盘位置. 图1 图2 问题 ...
- 借汉诺塔理解栈与递归
我们先说,在一个函数中,调用另一个函数. 首先,要意识到,函数中的代码和平常所写代码一样,也都是要执行完的,只有执行完代码,或者遇到return,才会停止. 那么,我们在函数中调用函数,执行完了,就会 ...
- 个盘子的汉诺塔需要移动几步_坨——理解递归实现quot;汉诺塔quot;代码的关键...
我记得,大学学C语言时,在函数递归调用那一节有个作业,就是写汉诺塔.不少同学遭遇到困难.在知乎上遇见的就有: 如何理解汉诺塔的递归?www.zhihu.com 题主发出悲鸣:"--学C++ ...
- “三色河内塔”算法(三色汉诺塔)
问题引入 "三色河内塔"由"河内之塔"的规则衍生而来(点击查看),区别在于三色河内塔的目的是将图1所示的圆盘位置,移动成为图2所示的圆盘位置."三色河 ...
- 汉诺塔游戏规律,让汉诺塔沦为体力劳动!(后附汉诺塔解法Python源码)
记住这个规律,以后玩汉诺塔基本上就是体力劳动了. 规律: 先小后大,单左双右,循环. 设3个柱子分别是甲,乙,丙,把3根柱子看成一个循环,也就是说,甲的右边是乙,乙的右边是丙,而丙的右边则回到甲,同理 ...
- 汉诺塔问题 [递归 + 抽象]
汉诺塔 前言 一.题意 二.抽象思维 1.源码 三.扩展 1.分析 2.源码 总结 参考文献 前言 汉诺塔问题,是学习递归的第一个算法题,也是非常经典的递归问题.由于它是双递归问题,所以初学时不易理解 ...
最新文章
- Linux中netfilter模块编程实践
- VisDA-2020亚军技术方案分享
- 华为软件研发面试题1
- 利用并查集判断一个无向图是否成树
- Oracle安装基本步骤
- 金碟财务软找不到服务器怎么办,金蝶财务软件KIS标准版客户端连接不上服务器解决办法.pdf...
- 马化腾:谈谈我创办腾讯这些年
- 小米平板1android驱动,小米平板3usb驱动
- 计算机设计贺卡教案,《运用Word制作电子贺卡》教学设计
- HTML空白字符占位问题
- HDU 5755 Gambler Bo(数论)
- mac os重置服务权限
- 普通云硬盘,高性能云硬盘和SSD云硬盘三者之间有什么区别?
- Fallout 4 辐射4 技巧统计
- scratch双语教师课件文档手册 3.scratch桌面舞台坐标系
- 10部令人泣不成声的经典电影
- 学习笔记(16):重叠元素
- element 表格+分页封装
- 阿里云服务器 smtpClient发送邮件问题
- [FPGA]关于Xilinx与Altera两家FPGA结构的对比