码迷,mamicode.com
首页 > 编程语言 > 详细

Java编程经典问题

时间:2016-08-12 20:08:33      阅读:179      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!