大家好,我是小鸭酱,博客地址为:http://www.cnblogs.com/xiaoyajiang

以下进行汉诺塔问题的递归实现

#include <iostream.h>

int gbsx( char & L, char & R  )    //改变顺序的函数

{  char T ;

T= L ;

L= R ;

R= T ;

return0 ;

}

void move( int n , char a , char b , char c)      //汉诺塔核心函数

{

if( n == 1 )

{

cout<< "移动"<< a  << "到" << c << endl ;

}

else

{   gbsx( b , c );                    //改变后面两个的顺序

move( n - 1 , a , b , c );                //用递归实现其步骤

gbsx( b , c );                    //把后面那两个的顺序换回来

move( 1 , a , b , c);

gbsx(a , b );                       //改变前面两个的顺序

move(n - 1 , a , b , c );               //用递归实现其步骤

}

}

int sum( int n )                         //用来计算步骤数的函数

{

ints = 1 ;

for(int i = 1 ; i <= n ; i++ )

{

s= s*2 ;

}

returns-1 ;

}

void main()                            //主函数

{  int n = 1 ;

cout<< "请输入您所放的盘子数目"<< endl ;

cin>> n ;                                //通过输入的值赋给n来实现

cout<<  "共有" << sum ( n ) <<"步,"<< "步骤为"<< endl ;

move( n , 'A' , 'B' , 'C' );                    //调用函数

}

汉诺塔问题C++实现的更多相关文章

  1. 算法笔记_013:汉诺塔问题(Java递归法和非递归法)

    目录 1 问题描述 2 解决方案  2.1 递归法 2.2 非递归法 1 问题描述 Simulate the movement of the Towers of Hanoi Puzzle; Bonus ...

  2. C#递归解决汉诺塔问题(Hanoi)

    using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace MyExamp ...

  3. 数据结构0103汉诺塔&八皇后

    主要是从汉诺塔及八皇后问题体会递归算法. 汉诺塔: #include <stdio.h> void move(int n, char x,char y, char z){ if(1==n) ...

  4. Conquer and Divide经典例子之汉诺塔问题

    递归是许多经典算法的backbone, 是一种常用的高效的编程策略.简单的几行代码就能把一团遭的问题迎刃而解.这篇博客主要通过解决汉诺塔问题来理解递归的精髓. 汉诺塔问题简介: 在印度,有这么一个古老 ...

  5. 几年前做家教写的C教程(之四专讲了指针与汉诺塔问题)

    C语言学习宝典(4) 指针:可以有效的表示复杂的数据结构,能动态的分配动态空间,方便的使用字符串,有效的使用数组,能直接处理内存单元 不掌握指针就没有掌握C语言的精华 地址:系统为每一个变量分配一个内 ...

  6. python实现汉诺塔

    经典递归算法汉诺塔分析: 当A柱子只有1个盘子,直接A --> C 当A柱子上有3个盘子,A上第一个盘子 --> B, A上最后一个盘子 --> C, B上所有盘子(1个) --&g ...

  7. fzu1036四塔问题(汉诺塔问题拓展)

    #include<iostream> #include<cstdio> #include<cmath> using namespace std; ]; int ru ...

  8. 1019: [SHOI2008]汉诺塔

    1019: [SHOI2008]汉诺塔 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1495  Solved: 916[Submit][Status] ...

  9. 编程:递归编程解决汉诺塔问题(用java实现)

    Answer: //Li Cuiyun,October 14,2016. //用递归方法编程解决汉诺塔问题 package tutorial_3_5; import java.util.*; publ ...

  10. "递归"实现"约瑟夫环","汉诺塔"

    一:约瑟夫环问题是由古罗马的史学家约瑟夫提出的,问题描述为:编号为1,2,-.n的n个人按顺时针方向围坐在一张圆桌周围,每个人持有一个密码(正整数),一开始任选一个正整数作为报数上限值m,从第一个人开 ...

随机推荐

  1. BZOJ 4407 于神之怒加强版

    http://www.lydsy.com/JudgeOnline/problem.php?id=4407 题意: 给下N,M,K.求 思路:  来自:http://blog.csdn.net/ws_y ...

  2. 关于Android读取不同位置(drawable,asset,SDCard)的图片资源的总结

    方式一: 已将图片保存到drawable目录下,通过图片id获得Drawable或者Bitmap,此方式最常用.(若只知道图片的名称,还可以通过图片的名称获得图片的id) (1)通过图片id获得Dra ...

  3. sendmsg: no buffer space available

    今天在将项目从虚拟机上移植到真实机器上面的时候,发现问题,总是不成功,最后判断是userspace的程序没有向kernel发送消息成功,因为无法触发kernel的行为,但是userspace显示正常. ...

  4. eclipse与myeclipse工程互转

    eclipse转myeclipse: 在Myeclipse中新建web工程导入即可. myeclipse转eclipse:  在eclipse中新建web工程,把myeclipse项目中代码手动拷贝到 ...

  5. javascript 倒计时天、小时、分钟、描述的倒计时代码

    调用方法 var _TimeCountDown = new TimeCountDown("sttime1",{ startTime:'2016-07-30 10:07:55', / ...

  6. MVC框架个人浅析

    1.概述: 相信不少前端从业者,都会遇到MVC编程模式,现今多数轻量级网站用php作为后台交互,MVC编程模式用于JAVAWEB开发,应用类型以系统占多数(包括并不限于系统,电商网站,平台交互当然都能 ...

  7. Github 开源编辑器 ATOM 已开放下载

    Update:2014-09-08 Atom 于5月6日正式开放下载(遗憾的是只有 MAC 版本),并且在 MIT 协义下开源,从界面可以看出,这款软件很像 Sublime Text,不过由于她的开源 ...

  8. [转]Android-网络通信框架Volley使用详解

    1 Volley发送get请求: public void getJson() { String url = "http://"+host+":8080/web/json. ...

  9. 自定义PopupWindow动画效果

    public class RollActivity extends Activity { private View view; private Button btn; private PopupWin ...

  10. Java初转型-Tomcat安装和配置

    1.http://www.cnblogs.com/diegodu/p/5915358.html tomcat直接解压,启动然后测试是否正常. 2.http://www.cnblogs.com/mq00 ...