算法分析--汉诺塔的递归
来源:互联网 发布:单键实现单片机开关机 编辑:程序博客网 时间:2024/06/05 17:15
- 汉诺塔的递归分析
数学规律分析
算法分析
汉诺塔的算法就3个步骤:
第一,把a上的n-1个盘通过c移动到b。
第三,因为n-1个盘全在b上了,所以把b当做a重复以上步骤就好了。
这个算法看起来就简单多了。不过,思考和体会的过程需要很多理解。我自己的理解是,每次对象就是两个盘子(从1个开始,依次配对),较小的盘子移动到辅助的柱子,露出来较大的柱子,把较大的移动到目标柱子上,最后把较小的柱子移动到目标柱子。
#include "stdafx.h"#include <iostream>using namespace std;/*汉诺塔问题的递归求解*/void move(int n,char a,char b,char c){ if(n==1){ printf("这是n=1时的 "); printf("\t%c->%c\n",a,c); //当n只有1个的时候直接从a移动到c } else { move(n-1,a,c,b); //第n-1个要从a通过c移动到b printf("这是!=1时的 "); printf("\t%c->%c\n",a,c); move(n-1,b,a,c); //n-1个移动过来之后b变开始盘,b通过a移动到c,这边很难理解 printf("这是路过的\n "); }}void main(){ int n; printf("请输入要移动的块数:"); scanf("%d",&n); move(n,'a','b','c');}
代码解法的理解
文字部分是我对于程序处理不同的盘子个数做的说明。这个move()函数的参数包括当前移动的盘子的编号、和它将要用到的3个柱子。
阅读全文
0 0
- 算法分析--汉诺塔的递归
- 递归与非递归算法的分析
- 递归算法的复杂度分析
- 汉诺塔递归分析和非递归算法
- 汉诺塔问题递归算法分析:
- 汉诺塔问题递归算法分析
- 汉诺塔问题递归算法分析
- 汉诺塔问题递归算法分析
- 汉诺塔问题递归算法分析
- 河内塔的递归算法的分析
- 汉诺塔的递归算法
- 递归算法的时间复杂度分析
- 递归算法的时间复杂度分析
- 递归算法的时间复杂度分析
- 递归算法的时间复杂度分析
- 递归算法的时间复杂度分析
- 联机算法 与 递归调用 的分析
- 递归算法的时间复杂度分析
- android与js之间的交互
- C中malloc和C++中new的区别
- 欢迎使用CSDN-markdown编辑器
- 如何利用“口碑推广”,实现独具一新的推广方式
- 关于表格模板
- 算法分析--汉诺塔的递归
- RETON双屏光纤KVM延长器上市
- Shiro的使用(一)
- oracle官方所有JDK版本下载
- 2017.10.18
- 【Linux】从进程共享的角度理解IPC通信
- bzoj1711: [Usaco2007 Open]Dining吃饭(网络流)
- python IO
- 批量采集上百万网页内容-php采集网页-php爬虫视频教程6