双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 双汉诺塔问题相关推荐

  1. 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== ...

  2. 汉诺塔(hanoi)、双色汉诺塔(分离型)、三色汉诺塔

    汉诺塔 汉诺塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时北越的首都,即现在的胡志明市:1883年法国数学家Edouard Luca ...

  3. 双色汉诺塔算法的证明——数学归纳法

    数学归纳法 我们先来了解一下数学归纳法(这个我高中的时候数学有选修的,可惜老师没讲,但是我自己还是自学了的) 数学归纳法(Mathematical Induction, MI)是一种数学证明方法,通常 ...

  4. “双色河内塔”算法(双色汉诺塔)

    问题引入 "双色河内塔"由"河内之塔"的规则衍生而来(点击查看),区别在于双色河内塔的目的是将图1所示的圆盘位置,移动成为图2所示的圆盘位置. 图1 图2 问题 ...

  5. 借汉诺塔理解栈与递归

    我们先说,在一个函数中,调用另一个函数. 首先,要意识到,函数中的代码和平常所写代码一样,也都是要执行完的,只有执行完代码,或者遇到return,才会停止. 那么,我们在函数中调用函数,执行完了,就会 ...

  6. 个盘子的汉诺塔需要移动几步_坨——理解递归实现quot;汉诺塔quot;代码的关键...

    我记得,大学学C语言时,在函数递归调用那一节有个作业,就是写汉诺塔.不少同学遭遇到困难.在知乎上遇见的就有: 如何理解汉诺塔的递归?​www.zhihu.com 题主发出悲鸣:"--学C++ ...

  7. “三色河内塔”算法(三色汉诺塔)

    问题引入 "三色河内塔"由"河内之塔"的规则衍生而来(点击查看),区别在于三色河内塔的目的是将图1所示的圆盘位置,移动成为图2所示的圆盘位置."三色河 ...

  8. 汉诺塔游戏规律,让汉诺塔沦为体力劳动!(后附汉诺塔解法Python源码)

    记住这个规律,以后玩汉诺塔基本上就是体力劳动了. 规律: 先小后大,单左双右,循环. 设3个柱子分别是甲,乙,丙,把3根柱子看成一个循环,也就是说,甲的右边是乙,乙的右边是丙,而丙的右边则回到甲,同理 ...

  9. 汉诺塔问题 [递归 + 抽象]

    汉诺塔 前言 一.题意 二.抽象思维 1.源码 三.扩展 1.分析 2.源码 总结 参考文献 前言 汉诺塔问题,是学习递归的第一个算法题,也是非常经典的递归问题.由于它是双递归问题,所以初学时不易理解 ...

最新文章

  1. Linux中netfilter模块编程实践
  2. VisDA-2020亚军技术方案分享
  3. 华为软件研发面试题1
  4. 利用并查集判断一个无向图是否成树
  5. Oracle安装基本步骤
  6. 金碟财务软找不到服务器怎么办,金蝶财务软件KIS标准版客户端连接不上服务器解决办法.pdf...
  7. 马化腾:谈谈我创办腾讯这些年
  8. 小米平板1android驱动,小米平板3usb驱动
  9. 计算机设计贺卡教案,《运用Word制作电子贺卡》教学设计
  10. HTML空白字符占位问题
  11. HDU 5755 Gambler Bo(数论)
  12. mac os重置服务权限
  13. 普通云硬盘,高性能云硬盘和SSD云硬盘三者之间有什么区别?
  14. Fallout 4 辐射4 技巧统计
  15. scratch双语教师课件文档手册 3.scratch桌面舞台坐标系
  16. 10部令人泣不成声的经典电影
  17. 学习笔记(16):重叠元素
  18. element 表格+分页封装
  19. 阿里云服务器 smtpClient发送邮件问题
  20. [FPGA]关于Xilinx与Altera两家FPGA结构的对比

热门文章

  1. 秋招面试经验分享-阿里,cvte,迅雷,网龙,美团,已拿Offer
  2. 网页前端的Tribon三维模型展示技术分析
  3. 反爬虫总结 | 必须掌握的6种反爬虫策略
  4. bilinear 神经网络_bilinear model bilinear pooling(一)
  5. Linux dmesg 命令
  6. Ubuntu 22.04 root直接登录设置
  7. MySQL版本区别及选择
  8. Spring的aspect无法拦截有注解的jdk代理的接口方法的原因
  9. SpringBoot之AOP面向切面编程实例
  10. Otter实现数据库同步