汉诺塔
来源:互联网 发布:软件测试就业好不好 编辑:程序博客网 时间:2024/06/07 08:45
汉诺塔(河内塔):河内塔是根据一个传说形成的一个问题:有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小(意思就是大盘子不能移到小盘子的上方)。要求按下列规则将所有圆盘移至C杆:提示:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须尊循上述两条规则!
这种算法含有递归的思想,假如我们有n个盘子,整体看我们只要把n-1个盘子首选从A移动到临时盘子B上去即可(即使盘子每次只能够移动一次,这具体n-1个怎么移动,我们不要研究,计算机会帮助我们做完这件事情,我们只看整体,通过递归的思想完成即可),然后把最后一个盘子从A移动到C(目标盘子上),然后把n-1个盘子从B移动C盘子上即可,我们就完成了此算法的解题思路了!
下面给出参考代码:
package javastudy;
public class Testit10 {
public static void main(String[] args) {
// 汉诺塔
hanoi(3, "A", "B", "C");//调用函数
}
//体现的是一种递归的思想
static void hanoi(int n, String src, String mid, String dest) {
if (n == 1) {
System.out.println(src + "-->" + dest);//最后都会回到输出这里的
}
else {
hanoi(n - 1, src, dest, mid);//记住此规律即可
hanoi(1, src, mid, dest);//这里的mid也可以不写,写成这样也行""
hanoi(n - 1, mid, src, dest);//具体的n-1个数字怎么挪动的我们不要管,我们只要知道整体怎么移动就行
}
}
}
输出结果样例:
A-->C
A-->B
C-->B
A-->C
B-->A
B-->C
A-->C
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 开通CSDN博客目的:
- java 用边读边下载文件,可用于大数据excel下载
- 1050. String Subtraction (20) PAT甲级
- 【Spring】Spring Framework Reference Documentation中文版8
- 网络编程15最后
- 汉诺塔
- leetcode-409-Longest Palindrome
- 对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
- mysql
- java 编译语言 解释语言
- 找出这个图形的规律,并输出一个n行m列的图形
- jupyter notebook使用技巧
- 理解浏览器代理设置的意义-IP代理栽坑- SwichySharp
- 在eclipse中使用Lombok