Hanoi塔(分治法的应用)
1.分治法
分治法的设计思想是将一个难以直接解决的大问题分解成一些规模较小的相同问题,以便各个击破,分而治之。
一般来说,分治算法在每一层递归上都有3个步骤:
(1)分解:将问题分解成一系列子问题。
(2)求解:递归地求解各子问题。若子问题足够小,则直接求解。
(3)合并:将子问题的解合并成原问题的解。
2.Hanoi塔
分治法的典型应用:
当只有一个盘子时,直接从A移到C即可;
如果已知n-1个盘子的移动方案,那么n个盘子的移动方案如下:
先把前n-1个盘子从A借助C移动到B,再把第n个盘子从A直接移到C,然后再将B处的n-1个盘子从B处借助A移动到C处。至此就完成全部盘子的移动。
void Hanoi(int n,char a,char b,char c) //将n个盘子从a通过b移动到c
{
if(n>1){
Hanoi(n-1,a,c,b);//先将前n-1个盘子从a处通过b移动到b
move(n,a,c);//将第n个盘子从a处直接移动到c
Hanoi(n-1,b,a,c);//再将前n-1个盘子从了b处通过a移动到c
}else{
move(n,a,c);//只有一个盘子时,直接从a移动到c。递归出口
}
}
Hanoi塔(分治法的应用)相关推荐
- 分治法基本思想(汉诺塔问题 Tower of Hanoi)
文章目录 前言 基本思想 适用的问题 求解步骤 分治法要点 时间复杂性分析 举例-汉罗塔问题(Tower of Hanoi) 问题描述 解决步骤 java代码 前言 分治法来源于孙子兵法谋攻篇中写道- ...
- 分治法——Hanoi塔
1.Hanoi塔算法的基本原理: (1)问题描述: 有n个不同大小的盘子和三根木柱A, B, C,一开始,所有的盘子按照上小下大的顺序套在A柱上,要把n个盘子移到C柱上,一次只能移动一个盘子,且不允许 ...
- 用C语言实现分治方法数组的排序,C语言实现分治法实例
本文为大家分享了C语言实现分治法实例代码,供大家参考,具体内容如下 使用分治法求最大值 这个函数将数组a[l]...a[r]分成a[l],...,a[m]和a[m+1],...a[r]两部分,分别求出 ...
- 常用十大算法 非递归二分查找、分治法、动态规划、贪心算法、回溯算法(骑士周游为例)、KMP、最小生成树算法:Prim、Kruskal、最短路径算法:Dijkstra、Floyd。
十大算法 学完数据结构该学什么?当然是来巩固算法,下面介绍了十中比较常用的算法,希望能帮到大家. 包括:非递归二分查找.分治法.动态规划.贪心算法.回溯算法(骑士周游为例).KMP.最小生成树算法:P ...
- 算法设计与分析-《分治法》
<分治法> 一.分治与递归 二.分治法适应条件与时间复杂度 三.快速幂算法 四.Strassen矩阵乘法 五.合并排序 一.分治与递归 分治的设计思想是: 将一个大问题,分割成一些规模比较 ...
- python 实现分治法的几个例子
分治法所能解决的问题一般具有以下几个特征: 1) 该问题的规模缩小到一定的程度就可以容易地解决2) 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质.3) 利用该问题分解出的子问题 ...
- 二 用标准c语言实现hanoi塔问题,天大2016年1二月《数据结构》期末大作业考核要求.doc...
数据结构要求:独立完成,作答时要按照模版信息填写完整,写明题型.题号:作答方式:手写作答或电脑录入,使用学院统一模版(模版详见附件):提交方式:以下两种方式任选其一,手写作答的同学可以将作业以图片形式 ...
- 程序员的算法课(13)-分治法
一.什么是分治 [百度百科]分治法((Divide and Conquer))可以通俗的解释为:把一片领土分解,分解为若干块小部分,然后一块块地占领征服,被分解的可以是不同的政治派别或是其他什么,然后 ...
- 分治法的关键特征_经典算法思想2——分治(Divide-and-Conquer)
分治法,字面意思是"分而治之",就是把一个复杂的1问题分成两个或多个相同或相似的子问题,再把子问题分成更小的子问题直到最后子问题可以简单地直接求解,原问题的解即子问题的解的合并,这 ...
最新文章
- 论文简述 | 融合关键点和标记的基于图优化的可视化SLAM
- 在文本每一行的行首和行尾都插入特定的相同字符或文本
- jQuery图片自动轮转动画特效
- oracle 半连接 效率,关于oracle中的半连接
- 【转】基于DCMTK的DICOM相关程序编写攻略
- cms文章 mysql存储_MySQL存储引擎笔记
- Spring 字符编码过滤
- error) DENIED Redis is running in protected mode because protected mode is enabled报错
- php 读取excel转数组中,php读取Excel中内容到数组
- [精简]托福核心词汇98
- 《Excel大神上分攻略》学习笔记3——函数求和及常见函数
- 瞎扯:修仙文明VS科技文明发展潜力
- 【LaTeX Workshop】VS Code 与 SumatraPDF 双向链接配置方法
- 网络安全学习笔记——DNS漏洞
- Access-Control-Allow-Origin 解决方法
- 朋友千千万,知己有几人。转些短句。
- 真无线蓝牙耳机哪个延迟最低?低延迟蓝牙耳机推荐
- 关于 三相可控硅触发板 晶闸管整流调压控制板
- vue通过v-if隐藏的元素在网页加载时闪现
- Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)错误