3个汉诺塔问题A—>C

移动次数2^n-1

  1. hannoni(int n,char a,char b,char c)把n个盘子借助b,从a移动到c
  2. move(int n,char a,char c)把第n个盘子,从a移动到c
#include<iostream>
#include<cmath>
using namespace std;
//汉诺塔问题A--->C
//2^n-1次移动次数 //把第n个盘子从a移动到c
void move(int n,char a,char c)
{cout  <<"把"<<n<<"号盘子从"<<a<<"移到"<<c<<endl;
}
//把n个盘子a借助b移到c
void hannoni(int n,char a,char b,char c)
{if(n==1)//只需要移动一次 move(1,a,c);else{//a-->b   n-1hannoni(n-1,a,c,b);move(n,a,c);//b--->c n-1hannoni(n-1,b,a,c);
}
}
int main()
{int n;cout <<"请输入要移动的盘子数"<<endl; cin>>n;hannoni(n,'A','B','C');return 0;
}

要点:A—>C
1.当n==1时直接从A移动到C
2.当n>1时,
先把n-1个盘子借助C,从A移动到B
再把第n个盘子从A移动到C
最后,借助A,把n-1个盘子从B移动到C

汉诺塔移动次数

要点:A—>C
1.当n==1时直接从A移动到C 移动一次
2.当n>1时,
先把n-1个盘子借助C,从A移动到B 移动n-1次
再把第n个盘子从A移动到C 移动一次
最后,借助A,把n-1个盘子从B移动到C 移动n-1次
所以,
n=1,T(N)=1
n>1,T(N)=2T(N-1)+1

代码示例

#include<iostream>
#include<cmath>
using namespace std;int count(int n){int number=0;if(n<=0)return -1;if(n==1)number=1;elsenumber=2*count(n-1)+1;return number;}int main()
{int n;cout <<"输入要移动的盘子个数"<<endl; cin>>n;cout<<count(n)<<endl;return 0;}

C++3个汉诺塔递归问题相关推荐

  1. 青蛙跳台(含变种)及汉诺塔递归,母牛生小牛

    青蛙跳台(含变种)及汉诺塔递归,母牛生小牛 文章目录 青蛙跳台(含变种)及汉诺塔递归,母牛生小牛 #define _CRT_SECURE_NO_WARNINGS #include<Windows ...

  2. 数据结构之栈与递归的应用(汉诺塔递归解法)

    上一节简单的讲述了递归的实现与简单应用,接下来我们说一下另一个经典应用. 汉诺塔递归解法 一.起源: 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子, ...

  3. 汉诺塔递归的c语言实现(递归)

    对于递归来讲, 汉诺塔实际是经典到不能再经典的例子了,   每个数据结构的教材对会提到. 但是到最后只给出一段类似下面的一段代码: #include<stdio.h>void move(i ...

  4. 汉诺塔递归与非递归实现

    汉诺塔递归与非递归实现 背景介绍 汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64 ...

  5. 算法分析:傻瓜式理解汉诺塔递归问题

    算法分析:傻瓜式理解汉诺塔递归问题 一.汉诺塔问题规则 设a.b.c是三个塔座, 开始时,a上有n个圆盘自下而上,从大到小地叠放在一起. 现要求将a上的圆盘移到b上,仍按相同顺序叠放 规则1:每次只能 ...

  6. java汉诺塔递归算法_数据结构--汉诺塔递归Java实现

    1 /*汉诺塔递归2 * 1.将编号0-N-1个圆盘,从A塔座移动到B上面3 * 2.将编号N的1个圆盘,从A移动到C上面4 * 3.最后将B上面的N-1个圆盘移动到C上面5 * 注意:盘子的编号从上 ...

  7. 汉诺塔递归Python实现

    大二学习数据结构的时候知道了汉诺塔问题,由于当时不求甚解对这个问题没真正理解.今天学习廖雪峰python教程遇到了递归实现汉诺塔的练习,这才终于真正理解了汉诺塔递归的问题. 汉诺塔问题:有三个柱子A, ...

  8. 汉诺塔递归与非递归算法

    问题描述: 在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针.印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这 ...

  9. 汉诺塔递归 C语言 代码简洁

    #include<stdio.h> void hannuota(int n,char A,char B,char C) {if(1==n) printf("将编号为%d的盘子从% ...

  10. 汉诺塔递归问题的分析与Python实现

    背景 相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏.该游戏是在一块铜板装置上,有三根杆(编号A.B.C),在A杆自下而上.由大到小按顺序放置64个金盘(如图).游戏的目标:把A杆上的金盘 ...

最新文章

  1. Python3破冰人工智能,你需要掌握一些数学方法
  2. sap系统操作流程财务软件_金蝶财务软件的操作流程汇总
  3. 开篇词:中文自然语言处理——未来数据领域的珠穆朗玛峰
  4. 去除select框的默认样式 (包括下拉尖括号)
  5. 【ES9(2018)】String 扩展 标签模板里字符串转义
  6. 高速通道 > 专有网络对等连接(关闭新购) > VPC互连
  7. 速打微补丁!这个越权文件读取漏洞影响 Windows OS
  8. autowired注解_Spring系列之Spring常用注解总结
  9. oracle归档文件管理
  10. jboss7 应用详解_【扔掉说明书114】本田 思域 2020款 舒适与娱乐功能详解
  11. 总结一下常用web.config公共配置。
  12. Ubuntu临时修改ip地址
  13. C语言五子棋双人模式
  14. 大学计算机学cad的,征文通知:第二十二届中国计算机辅助设计与图形学(CADCG 2019)学术会议...
  15. Makefile3、书写规则(文件搜寻、伪目标、多目标、静态模式、自动生成依赖性)
  16. 同事能力比你强怎么办
  17. MATLAB数据转化num,str,cell,char
  18. jQuery笔试题汇总整理--2018
  19. 五个好用的网络协议分析工具(附下载地址)
  20. 7-5 快乐的尽头 (17 分)

热门文章

  1. python3.8怎么打开创建_Python 3.8 新功能大揭秘【新手必学】
  2. 【转】C#实现SM2国密加密
  3. 【转】3:C#异步WaitAll的使用
  4. 34观察者模式(Observer Pattern)
  5. 【转】4.2SharePoint服务器端对象模型 之 使用CAML进行数据查询(Part 2)
  6. ThriftParserError: ThriftPy does not support generating module with path in protocol 'd'
  7. php怎么创建进程,在php中为长时间运行的进程创建后台进程
  8. java引入resource下的模板_Beetl自定义ResourceLoader,实现特殊的模板加载需求
  9. 【JS 逆向百例】网洛者反爬练习平台第五题:控制台反调试
  10. Python3 爬虫学习笔记 C07 【解析库 lxml】