import java.io.*;
public class Hnt{
private static int sum=0;
//把n个盘子从source借助temp移动到target
private static void toMoveAll(int n,char source,char temp,char target){
if(n==1)toMoveOne(source,target);
else{
toMoveAll(n-1,source,target,temp);
toMoveOne(source,target);
toMoveAll(n-1,temp,source,target);
}
}
//把一个盘子从source移动到target
private static void toMoveOne(char source,char target){
sum++;
System.out.print(source+"->"+target+" ");
if(sum%5==0)System.out.println();
}
//接收键盘输入的信息
private static int getNumber(){
int intGeShu=1;
String strGeShu=new String();
try{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
strGeShu=br.readLine();
}catch(IOException e){}
try{
intGeShu=Integer.parseInt(strGeShu);
}catch(NumberFormatException ex){}
return intGeShu;
}
//主函数入口
public static void main(String args[]){
int n=1;
System.out.println("****************汉诺塔问题求解*****************");
System.out.print("请输入盘子的个数:");
n=getNumber();
toMoveAll(n,'A','B','C');
System.out.println();
System.out.println("总共需要"+sum+"步!");
}
}