Java经典算法——汉诺塔问题
2017-03-25 23:39
211 查看
题目:
最大圆盘在最底,其余依次叠上去,依次减小,现要求将圆盘逐个移动到另一根杆上,规定一次只能移动一个,且小的只能放到大的上面。
最大圆盘在最底,其余依次叠上去,依次减小,现要求将圆盘逐个移动到另一根杆上,规定一次只能移动一个,且小的只能放到大的上面。
import java.util.Scanner; public class Hanoi { private static int count; public static void main(String[] args) { int n; Scanner sc=new Scanner(System.in); System.out.print("请输入圆盘数量:"); n=sc.nextInt(); count=0;//表示移动的步数 hanoi(n,'X','Y','Z');//三根杆分别为'X','Y','Z' sc.close(); } private static void hanoi(int n, char x, char y, char z) { /* 当n=1时,将圆盘从第一杆移动到第三杆; 当n>1时,把圆盘看作两部分,第一部分是最底层的圆盘,第二部分就是除了最底层之外的所有圆盘的总和, 第一步:将第一部分的圆盘从第一杆移动到第二杆; 第二步:将第二部分的圆盘从第一杆移动到第三杆 第三步:将第一部分的圆盘从第二杆移动到第三杆 */ if(n==1){ System.out.println("第"+(++count)+"次移动,从"+x+"移动到"+z); }else{ hanoi(n-1,x,z,y); System.out.println("第"+(++count)+"次移动,从"+x+"移动到"+z); hanoi(n-1,y,x,z); } } }
相关文章推荐
- java经典算法_016猴子吃桃问题(递归)
- 经典算法问题的java实现<二>
- 汉诺塔问题的java算法实现
- 经典算法之汉诺塔求解问题
- Java经典问题算法大全
- 大学常见算法的java实现及思考-汉诺塔问题
- Java 常用排序算法/Java经典问题算法
- 算法笔记_013:汉诺塔问题(Java递归法和非递归法)
- Java经典问题算法大全
- 汉诺塔问题——Java详细算法分析
- 汉诺塔问题的算法分析与实现(Java)
- Java经典问题算法大全 Java小程序
- Java经典问题算法大全
- Java经典算法——窃贼问题
- Java经典问题算法大全
- 经典算法问题的java实现<一>
- 【LeetCode-面试算法经典-Java实现】【063-Unique Paths II(唯一路径问题II)】
- 【LeetCode-面试算法经典-Java实现】【134-Gas Station(加油站问题)】
- Java经典问题算法大全
- 【LeetCode-面试算法经典-Java实现】【063-Unique Paths II(唯一路径问题II)】