汉诺塔的实现
来源:互联网 发布:环境科学与工程知乎 编辑:程序博客网 时间:2024/04/28 09:50
从左到右 A B C 柱 大盘子在下, 小盘子在上, 借助B柱将所有盘子从A柱移动到C柱, 期间只有一个原则: 大盘子只能在小盘子的下面.如果有3个盘子, 大中小号, 越小的越在上面, 从上面给盘子按顺序编号 1(小),2(中),3(大), 后面的原理解析引用这里的编号.
1.假设只有一个盘子的时候, 盘子数量 N=1
只有一个步骤 将第1个盘子从A移动到C, 为了对比方便我这样来描述这个步骤:
步骤 盘子编号 从柱子移动 移动到柱子
1 1 A C
2. 如果有两个盘子, 盘子数量 N = 2
步骤 盘子编号 从柱子移动 移动到柱子
1 1 A B
2 2 A C
3 1 B C
3. 如果有三个盘子, 盘子数量 N = 3
步骤 盘子编号 从柱子移动 移动到柱子
1 1 A C
2 2 A B
3 1 C B
4 3 A C
5 1 B A
6 2 B C
7 1 A C
代码如下:#include <stdio.h>void hanoi( int n, char a,char b, char c ){if( n > 0 ){if( n == 1 )//如果只有一个盘子 {printf( "%c->%c\n",a,c );}else//盘子大于一进行递归 {hanoi( n-1 ,a,c,b );//将n-1个盘子从a借助c移至b printf( "%c->%c\n",a,c );//将最底层盘子从a移至c hanoi( n-1,b,a,c );//将n-1个盘子从b借助a移至c }}}int main(){hanoi( 2,'a','b','c' );return 0;}
- 汉诺塔的实现算法
- Java 汉诺塔的实现
- 汉诺塔的实现
- 汉诺塔的递归实现
- 汉诺塔的递归实现
- 汉诺塔的实现 递归
- 汉诺塔的java实现
- 汉诺塔的实现
- 汉诺塔问题的实现
- 汉诺塔的实现
- 汉诺塔的简单实现
- 汉诺塔的java 实现
- 汉诺塔的实现
- 汉诺塔的Java实现
- 递归实现的 汉诺塔
- 汉诺塔的实现
- 汉诺塔的递归实现
- 汉诺塔的实现
- asp.net core mvc权限控制:分配权限
- 4 Linux 查看历史命令 - history
- DHCP以太报文全码分析--(含完整数据包内容)
- Monte Carlo Sampling Methods-- 蒙特卡洛采样方法
- 学习Android中服务总结
- 汉诺塔的实现
- 数据库的主键和外键
- 两个栈实现队列
- 001_UNIX发展历史和发行版本
- redis系列(二)数据结构
- tf常见疑惑
- thuwc2017滚粗记
- 计算机网络面试题总结
- 【译】走近人工智能