newasp home
用户管理  |  用户注册
首 页 ┆ 文章中心 ┆ 下载中心 ┆ 社区论坛 ┆ 客户留言
  • 站点首页
  • 电脑网络技术
  • 图形图象技术
  • 网络应用
  • 多媒体技术
  • 电脑入门初步
  • 网络推广技术
  • 数据库设计
  • Linux技术
  • 网络动态
用户名: 密码:
当前位置:PC我爱社区 → 文章中心 → 数据库设计 → 文章内容

九连环智力游戏的算法

减小字体 增大字体 作者:网络  来源:转载  发布时间:2008-2-23 14:28:46

COOCO视频会议实现沟通创造价值!    影视制作、广告摄影、3D制作、企业形象策划
文红论文网提供各类论文发表和翻译 像素科技--全力推出主机租用特惠行动!

一、九连环简介

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

二、九连环的规律

通过玩九连环你就会发现存在这样一个规律:

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

三、拆解/安装的过程

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

其实安装和拆解是一个道理,因为他们均是使用上面说的规律来完成的。
正确是安装也是先以第 9 环为目标,先装上它,简化为装一个 8 连环。接着再也第 8 环为目标,装上它,简化为装一个 7 连环。以此类推,直至全部安装。
当然,现在这么说是便于理解,当你深刻的理解了上面所说的规律后,就会发现,安装上第 9 环后,问题可以被简化为装一个 7 连环,而当装上第 7 环后,问题就被简化为装一个 5 连环了,呵呵,就是这样的,不知道你现在是否明白我的意思……

四、一个猜想

仔细观察九连环的结构、思考九连环的规律及拆解/安装的过程,你是不是有一种感觉:九连环跟递归一定有联系。你看,递归的基本思想是把一个大的问题分解为一个规模较小的问题,从这些较小问题的解,构造出大问题的解,而这些规模较小的问题,用同样的方法分解成更小的问题,从更小问题的解,构造出较小的问题,一层层下去,一般最后总是可以分解到可以直接求解的小问题。嘿嘿,九连环的拆解/安装多么的符合这个规律啊……^_^

五、算法实现

以下是算法实现,程序写的很简洁,省略了很多功能的实现,比如计数等,如果你觉得有必要的话,可以自行添加上去,我相信很容易,并不要很多的改动。

the c code here:

/* 任意 n 连环均适用      */

正文

void upring();               /*加上函数说明,否则编译将会出一点小错误*/

void downring(int n)     /*下环的逻辑就体现在这里*/
{
    if(n>2) downring(n-2);
    printf("下第%d环\n",n);
    if(n>2) upring(n-2);
    if(n>1) downring(n-1);
}

void upring(int n)         /*上环的逻辑则体现在这里*/
{
    if(n>1) upring(n-1);
    if(n>2) downring(n-2);
    printf("上第%d环\n",n);
    if(n>2) upring(n-2);
}

void main()                  /*简洁的主函数*/
{
    printf("拆解\n");
    downring(9);
    printf("安装\n");
    upring(9);
    printf("结束\n");
}

[] [返回上一页] [打 印]
  • ·上一篇文章:网络安全之TCP端口作用、漏洞及操作
  • ·下一篇文章:如何在VB5.0中简单安全地使用多线程

文章评论评论内容只代表网友观点,与本站立场无关!

用户名: ! 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容: !

         (注“!”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码

频道栏目导航

  • 电脑网络技术
  • 图形图象技术
  • 网络应用
  • 多媒体技术
  • 电脑入门初步
  • 网络推广技术
  • 数据库设计
  • Linux技术
  • 网络动态
  • 更多分类

本类热门阅览

  • · 如何建立SQL Server 2005数据库邮件...
  • · C# 怎样实现远程连接SQL Server200...
  • · SQL 2005 XML最佳实施策略用法
  • · SQL Server2005高可用性方面的不足...
  • · 在SQL Server 2005中解决死锁问题
  • · Sql server 2005密码安全追踪与存储...
  • · SQL Server2005数据库连接中常见问...
  • · VS 2008和老的VS 2005附件包的兼容...
  • · 专家预言:PHP将比Java更受开发人员...
  • · Windows操作系统下JSP程序开发环境...
  • · Windows下如何用vc直接编译连接DDK...
  • · 黑客编程:ASP木马代码

相关文章

  • ·九连环智力游戏的算法

关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 管理登陆

PC我爱社区 站长:子昀 点击这里和我联系
沪ICP备06047794号