C++学习:任意合法状态下汉诺塔的移动(原创)
2015-08-17 22:21
295 查看
汉诺塔问题:
问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
现在将问题变形为:初识时,n个金盘分散摆放在三根柱子上,并且所有金盘都处于合法状态,将这些分散的金盘全部移动到第三根柱子上,并打印每一次的移动步骤以及移动后三个柱子上金盘的状态。
C++实现代码如下:
测试代码
问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
现在将问题变形为:初识时,n个金盘分散摆放在三根柱子上,并且所有金盘都处于合法状态,将这些分散的金盘全部移动到第三根柱子上,并打印每一次的移动步骤以及移动后三个柱子上金盘的状态。
C++实现代码如下:
#include <iostream> #include "Hanoi.h" using namespace std; void main(){ int a[4] = { 0, 1, 1, 1 }; Hanoi myhanoi(4, a); myhanoi.ShowHanoi(); myhanoi.Move2Last(); system("pause"); }
测试代码
相关文章推荐
- C++ 虚函数表解析
- Example of MPI_Type_struct
- 二分查找递归和非递归
- C++_编写动态链接库
- 二分查找的C++非递归实现
- 关于汇编指令:NEG 用C\C++如何操作的问题
- 关于汇编指令:NEG 用C\C++如何操作的问题
- C/C++编译预处理:宏定义指令、文件包含指令、条件编译指令和特殊符号处理
- C++链接错误“对函数或变量未定义的引用”解决办法
- VC++深入详解——第15章:多线程,进程,线程
- 约瑟夫问题
- LeetCode (8) String to Integer (atoi) C语言程序
- C语言编程需要注意的64位和32机器的区别
- 一起talk C栗子吧(第三十七回:C语言实例--获取当前日期和时间)
- 经典C语言程序设计100例
- C语言-6
- UE4学习笔记(二):c++与蓝图的交互
- 黑马程序员-[OC语言] 第八篇:foundation框架之 NSFileManager、NSDate概述
- 使用C++ 11 实现阻塞队列
- HDOJ1085母函数的应用