数据结构的应用——使用栈和递归实现Hanoi问题求解
2011-03-28 14:34
519 查看
package ds.linerlist; import java.util.Stack; /** * 用栈和递归实现N阶汉诺塔。 * @author <a href="mailto:bao.yiming@live.cn" mce_href="mailto:bao.yiming@live.cn">Bao Yiming</a> */ public class Hanoi { /** * 将塔座source上按直径由小到大且至上而下编号为1至n * 的n个圆盘按规则搬到塔座target上,temp可用作辅助塔座。 * @param n 汉诺塔的阶。 * @param source 源塔。 * @param temp 中间塔。 * @param target 目标塔。 */ public void go(int n, Stack source, Stack temp, Stack target) { /** * 当汉诺塔的阶为1时,直接将其从源塔座搬至目标塔座。 * 当汉诺塔高于1阶时,将从上至下n-1个圆盘以目标塔为辅助搬至中间塔座, * 将第n个圆盘搬至目标塔座,再将中间塔座的圆盘搬至目标塔座上。 * 在将中间塔座的圆盘搬至目标塔座上的过程中,递归调用方法。 */ if (1 == n) { move(source, target); } else { go(n - 1, source, target, temp); move(source, target); go(n - 1, temp, source, target); } } /** * 搬圆盘,将源塔座的最顶上的圆盘搬到目标塔座。 * @param source * @param target */ private void move(Stack source, Stack target) { target.push(source.pop()); } }
相关文章推荐
- 用递归法:设计算法求解汉诺塔问题,并编程实现。 (1) Hanoi(汉诺)塔问题分析 这是一个古典的数学问题,是一个用递归方法解题的典型例子。问题是这样的:古代有一个梵塔,塔内有3个座 A,B,C
- 数据结构的应用——使用栈实现任意迷宫的求解
- C语言实现Hanoi(汉诺塔)问题的递归求解
- 数据结构 使用递归任意进制转换(c语言实现)
- 问题4:如何使用递归与非递归实现二分查找?
- n阶Hanoi塔问题 递归实现
- 兔子生娃问题---函数递归应用--c语言实现
- hanoi汉诺塔问题的递归实现
- 数据结构(java语言描述)递归实现——汉诺塔问题
- 任何国家都无法限制数字货币。为什么呢? 要想明白这个问题需要具备一点区块链的基础知识: 区块链使用的大致技术包括以下几种: a.点对点网络设计 b.加密技术应用 c.分布式算法的实现 d.数据存储技术 e.拜占庭算法 f.权益证明POW,POS,DPOS 原因一: 点对点网络设计 其中点对点的P2P网络是bittorent ,由于是点对点的网络,没有中心化,因此在全球分布式的网
- 数据结构应用案例——栈结构用于8皇后问题的回溯求解
- 数据结构的应用——使用栈实现十进制到其他(2、8、16)进制的转换
- python中使用queue实现约瑟夫环(约瑟夫问题)求解
- 汉诺塔(Tower of Hanoi)问题的求解——利用栈与递归
- 任何国家都无法限制数字货币。为什么呢? 要想明白这个问题需要具备一点区块链的基础知识: 区块链使用的大致技术包括以下几种: a.点对点网络设计 b.加密技术应用 c.分布式算法的实现 d.数据存储技术 e.拜占庭算法 f.权益证明POW,POS,DPOS 原因一: 点对点网络设计 其中点对点的P2P网络是bittorent ,由于是点对点的网络,没有中心化,因此在全球分布式的网
- 学习C/C++语言:递归求解hanoi汉诺塔问题
- 兔子生娃问题---函数递归应用--c语言实现
- 使用C++递归求解跳台阶问题
- 数据结构的应用——使用栈实现十进制到其他(2、8、16)进制的转换
- Hanoi问题递归求解