当前位置: 首页 > news >正文

网站平面图要怎么做o2o网站建设信息

网站平面图要怎么做,o2o网站建设信息,做网站数据库有哪些,百度快照如何优化汉诺塔 —— (经典分治递归) 一.汉诺塔介绍二.分治算法解决汉诺塔问题三.汉诺塔问题的代码实现四.主函数测试展示 一.汉诺塔介绍 汉诺塔问题源自印度一个古老的传说,印度教的“创造之神”梵天创造世界时做了 3 根金刚石柱,其中的一…

汉诺塔 —— (经典分治递归)

  • 一.汉诺塔介绍
  • 二.分治算法解决汉诺塔问题
  • 三.汉诺塔问题的代码实现
  • 四.主函数测试展示

一.汉诺塔介绍

汉诺塔问题源自印度一个古老的传说,印度教的“创造之神”梵天创造世界时做了 3 根金刚石柱,其中的一根柱子上按照从小到大的顺序摞着 64 个黄金圆盘。梵天命令一个叫婆罗门的门徒将所有的圆盘移动到另一个柱子上,移动过程中必须遵守以下规则:
每次只能移动柱子最顶端的一个圆盘;
每个柱子上,小圆盘永远要位于大圆盘之上;

图 1 给您展示了包含 3 个圆盘的汉诺塔问题:

在这里插入图片描述

图 1 汉诺塔问题

一根柱子上摞着 3 个不同大小的圆盘,那么在不违反规则的前提下,如何将它们移动到另一个柱子上呢?图 2 给大家提供了一种实现方案:

在这里插入图片描述

图 2 汉诺塔问题的解决方案

汉诺塔问题中,3 个圆盘至少需要移动 7 次,移动 n 的圆盘至少需要操作 2n-1 次。

在汉诺塔问题中,当圆盘个数不大于 3 时,多数人都可以轻松想到移动方案,随着圆盘数量的增多,汉诺塔问题会越来越难。也就是说,圆盘的个数直接决定了汉诺塔问题的难度,解决这样的问题可以尝试用分治算法,将移动多个圆盘的问题分解成多个移动少量圆盘的小问题,这些小问题很容易解决,从而可以找到整个问题的解决方案。

二.分治算法解决汉诺塔问题

为了方便讲解,我们将 3 个柱子分别命名为起始柱、目标柱和辅助柱。实际上,解决汉诺塔问题是有规律可循的:

1) 当起始柱上只有 1 个圆盘时,我们可以很轻易地将它移动到目标柱上;
2) 当起始柱上有 2 个圆盘时,移动过程如下图所示:

在这里插入图片描述

图 3 移动两个圆盘

移动过程是:先将起始柱上的 1 个圆盘移动到辅助柱上,然后将起始柱上遗留的圆盘移动到目标柱上,最后将辅助柱上的圆盘移动到目标柱上。

3) 当起始柱上有 3 个圆盘时,移动过程如图 2 所示,仔细观察会发现,移动过程和 2 个圆盘的情况类似:先将起始柱上的 2 个圆盘移动到辅助柱上,然后将起始柱上遗留的圆盘移动到目标柱上,最后将辅助柱上的圆盘移动到目标柱上。

通过分析以上 3 种情况的移动思路,可以总结出一个规律:对于 n 个圆盘的汉诺塔问题,移动圆盘的过程是:
1.将起始柱上的 n-1 个圆盘移动到辅助柱上;
2.将起始柱上遗留的 1 个圆盘移动到目标柱上;
3.将辅助柱上的所有圆盘移动到目标柱上。

由此,n 个圆盘的汉诺塔问题就简化成了 n-1 个圆盘的汉诺塔问题。按照同样的思路,n-1 个圆盘的汉诺塔问题还可以继续简化,直至简化为移动 3 个甚至更少圆盘的汉诺塔问题。

三.汉诺塔问题的代码实现

//将n个圆盘借助by从from移到to
void hanoi(int n, char from, char to, char by)
{void move(int n, char x, char y);if (n == 1)move(n, from, to);else{hanoi(n - 1, from, by, to);move(n, from, to);hanoi(n - 1, by, to, from);}
}void move(int n, char x, char y)
{printf("第%d个圆盘从%c->%c\n", n, x, y);
}int main() {int n = 0;printf("请输入A柱上圆盘个数:");scanf("%d", &n);//将n个圆盘借助C从A移到Bprintf("移动方法展示:\n");hanoi(n, 'A', 'B', 'C');return 0;
}

四.主函数测试展示

在这里插入图片描述
在这里插入图片描述

http://www.yayakq.cn/news/132235/

相关文章:

  • 响应式网站建设需要注意什么附近电脑平面设计培训班
  • 企业网站公众号wordpress 简报
  • 入群修改网站后台织梦网站怎么做404页面模板
  • 太原有哪些做网站的公司随州网站seo诊断
  • 网站开发时会遇到哪些问题app定制小程序开发
  • 培训的网站建设本机建设网站
  • 怎么查网站后台地址wordpress列表图片大小
  • 四川省住房与城乡建设厅官方网站重庆市工程建设信息网官网新网
  • php mysql网站开发项目有谁认识做微网站的
  • 简历模板免费网站重庆网站建设公司电话
  • asp钓鱼网站开发宝塔建设的网站火车头发布失败
  • 做网站常用的小语种有哪些wap是什么意思啊
  • wordpress老网站重装法青岛cms建站系统
  • 建一个网站模板网可以接单做网站的软件
  • 做网站卖什么条件深圳考试培训网站建设
  • 做宠物店网站的素材国家网站标题颜色搭配
  • 南京建设交易中心网站丹阳市住房和城乡建设局网站
  • 新加坡 网站建设做智能家居网站
  • 环保设备在那个网站做logo图标素材网站
  • 个人soho要怎么做企业网站猎头
  • 购物小程序有哪些河北seo基础
  • 广州市做网站的各城市首轮感染高峰期预测
  • 宝山网站建设在线购物网站建设的需求分析
  • 耐克运动鞋网站建设规划书框架微商引流推广平台
  • 佛山网站优化多少钱古镇企业网站建设
  • 网站设计方面有什么公司谷歌 google
  • 哪个网站可以做兼职笔译云服务器可以放几个网站
  • 徐州网站建设电话怎样在谷歌做网站
  • 用vs做网站 怎么安装二级网站域名
  • 网站源码对应的数据库怎么做在线生成logo设计