标签:
【程序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 }
标签:
原文地址:http://www.cnblogs.com/dadapeng/p/5766156.html