将N个在a柱上的由上到下依次变大的方块,在b柱的辅助下,以与原来相同的摆放形式放在c柱上。
对于所有n来讲,都是将上边的n-1个方块通过c摆到b上,再将最大的方块放在c柱的底层,由此把一个需要移动n个方块的问题变成一个需要移动n-1个方块的问题,依次类推到最后n=1,就是直接将最小的方块由a移动到c。使用递归的方式完成。
import java.util.Scanner;
public class a1119{
public static void move(char sti1,char sti2){
System.out.println(sti1 + "→" + sti2);
}
public static void hanno(int n,char sti1,char sti2,char sti3){
if(n==1){
System.out.println(sti1 + "→" + sti3);
}
else{
hanno(n-1,sti1,sti3,sti2);
move(sti1,sti3);
hanno(n-1,sti2,sti1,sti3);
}
}
public static void main(String[] args){
System.out.println("请输入方块的个数");
Scanner scan = new Scanner(System.in);
int n =scan.nextInt();
hanno(n,'a','b','c');
}
思路在代码注释中。