递归算法-汉诺塔问题
来源:互联网 发布:简单制图软件 编辑:程序博客网 时间:2024/05/27 20:31
一直以来对递归讳莫如深,总是不太懂,现在慢慢的从简单的问题开始,解决问题。大二时候刘老师的算法分析学的很烂,记得第一章就有汉诺塔问题的描述。但是似懂非懂。只懂得过程,却不会写出算法
当A塔上有n个盘子是,先将A塔上编号1至n-1的盘子(共n-1个)移动到B塔上(借助C塔),然后将A塔上最大的n号盘子移动到C塔上,最后将B塔上的n-1个盘子借助A塔移动到C塔上。
综上所述,除了只有一个盘子时不需要借助其他塔外,其余情况均一样(只是事件的复杂程度不一样)。
<span style="font-size:14px;">import java.util.Scanner;public class hanoiQues { static int count = 0;// 移动累计次数count初始化 public static void main(String[] args) { Scanner sin = new Scanner(System.in); System.out.println("请输入盘数!"); int n = sin.nextInt(); hanoiQues hanoi = new hanoiQues(); hanoi.hanoi(n, 'A', 'B', 'C'); System.out.println(count); } public void move(char origin, char destination) { System.out.println("Direction:" + origin + "-->" + destination); count++; } public void hanoi(int n, char origin, char assist, char destination) { if (n == 1) { move(origin, destination); } else { hanoi(n - 1, origin, destination, assist);//先将初始塔的前n-1个盘子借助目的塔移动到借用塔上 move(origin, destination); //将剩下的一个盘子移动到目的塔上 hanoi(n - 1, assist, origin, destination);//最后将借用塔上的n-1个盘子移动到目的塔上 } }}</span>
- 汉诺塔问题递归算法
- 递归算法-汉诺塔问题
- 递归算法--汉诺塔问题
- 递归算法--汉诺塔问题
- 汉诺塔问题的递归算法
- 汉诺塔问题递归算法分析:
- 汉诺塔问题递归算法分析
- 汉诺塔问题C++递归算法
- 汉诺塔问题(递归算法)
- 递归算法1-汉诺塔问题
- 汉诺塔问题递归算法分析
- 汉诺塔问题(递归算法)
- 汉诺塔问题递归算法求解
- 算法基础:递归---汉诺塔问题
- 汉诺塔问题递归算法分析
- 递归算法之汉诺塔问题
- 汉诺塔问题(递归算法)
- 递归算法之汉诺塔问题
- LeetCode Palindrome Number
- sdut-2725-The Urge to Merge-状压DP
- 笔试题二:冒泡排序算法实现
- poj 1742 coins_多重背包
- 第十四周自由练习项目——随意输入数从大到小输出
- 递归算法-汉诺塔问题
- Java编码建议-1
- 数据结构课程设计(约瑟夫环)
- 笔试题三:带头节点head链表逆序
- 将win7电脑无线网变身WiFi热点,让手机、笔记本共享上网
- linux zip/unzip命令
- NYOJ-275-队花的烦恼一-2013年10月23日22:51:57
- Java学习路线
- NYOJ-277-车牌号-2013年10月23日23:00:40