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

原创 2006年02月28日 19:57:00

九连环简介

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

九连环规律

  • 第 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版)

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

九连环的递归算法(C和C++) 九连环的递归算法 一、九连环简介 九连环游戏是中国人自己发明的,它的历史非常悠久,据说是起源于战国时期。九连环主要是由一个框架和九个圆环组成:每个圆环上连有一个直...
  • wojiushiwo987
  • wojiushiwo987
  • 2012年08月12日 20:47
  • 4114

九连环所有步骤

九连环所有步骤
  • nameofcsdn
  • nameofcsdn
  • 2017年01月01日 18:01
  • 1881

九连环-递归解法

//求取下n环和放上n环的步数int ans; //规则一:第一环可以在任何时候放上或取下环柄。 //规则二:只有紧跟在领头环后的环可以放上或取下环柄。(领头环是套在柄上的最前面的环 int D...
  • hq572241670
  • hq572241670
  • 2014年11月27日 18:43
  • 461

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

[摘   要]本文简单介绍了中国传统的智力游戏--九连环,分析了其中的规律,给出了解决问题的算法。[关键词]九连环、N连环、递归、拆解、安装一、九连环简介九连环游戏是中国人自己发明的,它的历史非常悠久...
  • havelife
  • havelife
  • 2002年12月06日 09:40
  • 1881

九连环 C语言递归代码

两年前玩九连环时候写的,想清一下硬盘删些东西。 实际上九连环的装和卸都是递归操作: 1.第一个环可以自由装/卸 2.第i(i>1&&i 假如现在想卸下第7个环,那么需要保证第六个环处于未拆卸状...
  • Hilavergil
  • Hilavergil
  • 2017年11月25日 14:02
  • 130

九连环的递归算法(C和C++)经验分析

九连环的递归算法   一、九连环简介   九连环游戏是中国人自己发明的,它的历史非常悠久,据说是起源于战国时期。九连环主要是由一个框架和九个圆环组成:每个圆环上连有一个直杆,而这个直杆则在后面一个...
  • u011208969
  • u011208969
  • 2013年07月01日 09:34
  • 1349

九连环

Description九连环是由九个彼此套接的圆环和一根横杆组成,九个环从左到右依次为l~9,每个环有两种状 态:1和0,1表示环在杆上,0表示环不在杆上。初始状态是九个环都在杆上,即:1111111...
  • u014236167
  • u014236167
  • 2016年01月26日 16:47
  • 477

排列组合算法1:生成全部有序列b

对推导不感兴趣的老大们可以通过搜索”def”直接跳到代码实现部分。不过有闲心还是瞧瞧推导过程的好。我们可以看见好的算法并非无迹可寻,完全依赖某位大牛的灵光闪现,而是通过观察、归纳、试验、迭代改进,逐步...
  • g9yuayon
  • g9yuayon
  • 2007年04月10日 04:16
  • 9926

Android版九连环NingRings

NineRings是根据中国古典益智游戏九连环规则,抽象出来的一款休闲益智游戏! NineRings是第一款将九连环玩具在手机上(Android)模拟出来的游戏,九连环爱好者终于可以随时随地把玩九连...
  • L_Jsword
  • L_Jsword
  • 2014年08月20日 22:52
  • 1049

九连环答案(程序另文贴出)

*********.******** 1 卸下1环  ^.*.****** 2 卸下3环  ^**.****** 3 装上1环 ^*..****** 4 卸下2环 ^...****** 5 卸下1环 ...
  • ococo
  • ococo
  • 2003年01月28日 13:44
  • 772
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:九连环的递归算法,九连环算法(第2版)
举报原因:
原因补充:

(最多只允许输入30个字)