九连环简介

九连环游戏是中国人自己发明的,它的历史非常悠久,据说起源于战国时期。九连环主要是由一个框架和九个圆环组成:每个圆环上连有一个直杆,而这个直杆则在后面一个圆环内穿过,九个直杆的另一端用一块木板或圆环相对固定。

九连环规律

  • 第 1 环可以自由上下
  • 而上/下第 n 环时(n>1),则必须满足:第 n-1 个环在架上;前 n-2 个环全部在架下

拆解/安装的过程

正确的拆解是先以第 9 环为目标,先拆下它,简化为拆一个 8 连环。接着再也第 8 环为目标,拆下它,简化为拆一个 7 连环。以此类推,直至全部拆解。
正确是安装也是以第 9 环为目标,先装上它,简化为装一个 8 连环。接着再也第 8 环为目标,装上它,简化为装一个 7 连环。以此类推,直至全部安装。

递归算法

本算法逻辑适用任意个数的连环问题,于2002年11月6日设计,2006年2月28日修改如下

#include<iostream>
using namespace  std;

class  Ring
{
public :
  Ring(int  Num):RingNum(Num){}
  void  StartDown();
  void  StartUp();
private :
  int  RingNum;
  void DownRing(int  n);
  void UpRing(int  n);
};

void Ring::DownRing(int  n)
{
  if(n>2) DownRing(n-2 );
  cout<<"下第"<<n<<"环" ;
  if(n>2) UpRing(n-2 );
  if(n>1) DownRing(n-1 );
}

void Ring::UpRing(int  n)
{
  if(n>1) UpRing(n-1 );
  if(n>2) DownRing(n-2 );
  cout<<"上第"<<n<<"环" ;
  if(n>2) UpRing(n-2 );
}

void  Ring::StartDown()
{
  DownRing(RingNum);
}

void  Ring::StartUp()
{
  UpRing(RingNum);
}

int  main()
{
  Ring RingN(9 );
  RingN.StartDown();
  RingN.StartUp();
  return 0 ;
}


2002年九连环算法第1版中国传统智力游戏--九连环的递归算法(九连环算法第1版)

2006年九连环算法第2版九连环的递归算法(九连环算法第2版)

2016年九连环算法第3版九连环算法(第3版)

九连环的递归算法,九连环算法(第2版)相关推荐

  1. 九连环的递归算法(C和C++)

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 九连环的 ...

  2. 九连环的递回算法(C战C++)

    九连环的递回算法(C战 c++ )   九连环的递回算法   1.九连环简介   九连周 游戏是止您妊旁己创造的,它的汗青十分悠暂,听说是来源于战国期间.九连环次要是由一个框架战九个悦挥蟹组成:每一个 ...

  3. 《数据结构与算法 C语言版》—— 3.8习题

    本节书摘来自华章出版社<数据结构与算法 C语言版>一 书中的第3章,第3.8节,作者:徐凤生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 3.8习题 1名 ...

  4. 算法(第4版)Algorithms, Fourth Edition

    作者:[美] Robert Sedgewick,[美] Kevin Wayne 著,谢路云 译 出版社:人民邮电出版社 品牌:iTuring 出版时间:2012-10-01 外文名称:Algorith ...

  5. 《数据结构与算法 C语言版》—— 2.5上机实验

    本节书摘来自华章出版社<数据结构与算法 C语言版>一 书中的第2章,第2.5节,作者:徐凤生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.5上机实验 实 ...

  6. 《数据结构与算法 C语言版》—— 2.7习题

    本节书摘来自华章出版社<数据结构与算法 C语言版>一 书中的第2章,第2.7节,作者:徐凤生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.7习题 1描 ...

  7. 1.1.10 从二分查找BinarySearch开启算法学习之路---《java算法第四版》

    文章目录 0.前言 1.功能 2.示例 有两个名单tinyW.txt和tinyT.txt,将tinyT.txt名单中不在tinyW.txt的数据打印出来 ① 实现原理 ② 实现代码 ③ 性能分析 0. ...

  8. 算法笔记(JavaScript版)——排序

    算法笔记(JavaScript版)--排序 本文内容根据Rebert Sedgewick和Kevin Wayne的<算法(第四版)>整理,原代码为java语言,自己修改为JavaScrip ...

  9. java单词查找树_Trie 单词查找树 java实现(来自算法第4版)

    强烈建议看书上的实现步骤,这里只是一个个人记录. 单词查找树的性能: 查找命中所需的时间与被查找的键的长度成正比.比如单词有7个字符,查找或插入操作最多只需要检查8个节点. 查找未命中只需检查若干个字 ...

最新文章

  1. 【Android基础】序列化 Serializable vs Parcelable
  2. 嵌套SQL语句訪问DB2中SQLCA的调用技巧
  3. linux高可用性,linux – 高可用性Cron Jobs
  4. php追加记录到文件行首的办法
  5. php控制器是啥,控制器的定义
  6. 是什么专业_自考什么专业容易就业
  7. 安全狗深圳主题沙龙会:企业如何打造云安全堡垒
  8. InstallShield Premier版本和Professional版本的功能差异
  9. android 首页布局变换,Android XML布局与View之间的转换
  10. bzoj 3594: [Scoi2014]方伯伯的玉米田
  11. 定时任务调度框架实现总结
  12. 在CSS中clear属性的妙用
  13. 集成产品开发团队的组成
  14. python面板数据分析代码_用python预处理面板数据(续)
  15. asp.net core 系列之并发冲突
  16. 晶振时钟原理图、PCB设计指南
  17. SAP FICO 第三节 BDC和LTMC导入S4财务科目
  18. Webmagic爬虫框架
  19. 快读快写模板【附O2优化】
  20. 北京五险一金介绍及公积金领取办法

热门文章

  1. C语言:9乘9乘法表
  2. 一款仿《饿了么》订餐应用源码【iOS源码分享】
  3. 中国安全技术防范行业协会:办理安防资质怎么办理呢?
  4. 手机游戏最新技术选型之Flash AIR
  5. java gitblit_GitBlit安装与使用
  6. 3dmax动画03--插值,超出范围
  7. 浏览器执行原理、V8引擎
  8. 自动化创建WebGIS项目
  9. interunc微型计算机,全国计算机一级考试模拟试题.doc
  10. 【D1N910】正则表达式30分钟入门教程 (一)-学习笔记 实践