首页 > 编程语言 > 详细

Java编程经典问题

时间:2016-08-12 20:05:26      阅读:250      评论:0      收藏:0      [点我收藏+]
【程序1】汉诺塔

题目:这个问题是将指定个数而大小互不相同的盘子从一个塔上移到另一个塔上,移动要遵从下面的规则:

1)n个盘子标记为1,2,3,...,n,而三个塔标记为A、B和C。

2)任何时候盘子都不能放在比它小的盘子的上方。

3)初始状态时,所以的盘子都放在塔A上。

4)每次只能移动一个盘子,并且这个盘子必须在塔顶位置。

这个问题的目标是借助塔C把所有的盘子从塔A移到塔B。

代码:

技术分享
 1 import java.util.Scanner;
 2 
 3 public class TowerOfHanoi {
 4 
 5     public static void main(String[] args) {
 6         // TODO Auto-generated method stub
 7         Scanner input = new Scanner(System.in);
 8         System.out.println("Enter number of disks: ");
 9         int n = input.nextInt();
10 
11         System.out.println("The moves are: ");
12         moveDisks(n, ‘A‘, ‘B‘, ‘C‘);
13     }
14 
15     public static void moveDisks(int n, char fromTower, char toTower,
16             char auxTower) {
17         if (n == 1)
18             System.out.println("Move disk " + n + " from " + fromTower + " to "
19                     + toTower);
20         else {
21             moveDisks(n - 1, fromTower, auxTower, toTower);
22             System.out.println("Move disk " + n + " from " + fromTower + " to "
23                     + toTower);
24             moveDisks(n - 1, auxTower, toTower, fromTower);
25         }
26     }
27 }
View Code

 

Java编程经典问题

原文:http://www.cnblogs.com/dadapeng/p/5766156.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!