<pre>
public class HanNuo {
static List<Integer> a =new ArrayList<Integer>();
static List<Integer> b =new ArrayList<Integer>();
static List<Integer> c =new ArrayList<Integer>();
static int k=1;
public static void makeA(){
for(;k<11;k++){
a.add(k);
}
}
static void move(int n,List<Integer> a2,List<Integer> b2,List<Integer> c2,String sla,String slb,String slc){
if(n==1){
c2.add(0,a2.get(0));
a2.remove(0);
readList();
System.out.println(sla+"-->"+slc);
}else{
move(n-1,a2,c2,b2,sla,slc,slb);
if(c2.size()==0){
c2.add(a2.get(0));
a2.remove(0);
}else{
c2.add(0,a2.get(0));
a2.remove(0);
}
readList();
System.out.println(sla+"-->"+slc);
move(n-1,b2,a2,c2,slb,sla,slc);
}
}
static void readList(){
System.out.print("[");
for(int i =0;i<a.size();i++){
System.out.print(a.get(i));
}
System.out.print("]");
System.out.println("");
System.out.print("[");
for(int i =0;i<b.size();i++){
System.out.print(b.get(i));
}
System.out.print("]");
System.out.println("");
System.out.print("[");
for(int i =0;i<c.size();i++){
System.out.print(c.get(i));
}
System.out.print("]");
System.out.println("");
}
public static void main(String[] args) {
makeA();
move(a.size(),a, b, c, "a", "b","c");
}
}
static List<Integer> a =new ArrayList<Integer>();
static List<Integer> b =new ArrayList<Integer>();
static List<Integer> c =new ArrayList<Integer>();
static int k=1;
public static void makeA(){
for(;k<11;k++){
a.add(k);
}
}
static void move(int n,List<Integer> a2,List<Integer> b2,List<Integer> c2,String sla,String slb,String slc){
if(n==1){
c2.add(0,a2.get(0));
a2.remove(0);
readList();
System.out.println(sla+"-->"+slc);
}else{
move(n-1,a2,c2,b2,sla,slc,slb);
if(c2.size()==0){
c2.add(a2.get(0));
a2.remove(0);
}else{
c2.add(0,a2.get(0));
a2.remove(0);
}
readList();
System.out.println(sla+"-->"+slc);
move(n-1,b2,a2,c2,slb,sla,slc);
}
}
static void readList(){
System.out.print("[");
for(int i =0;i<a.size();i++){
System.out.print(a.get(i));
}
System.out.print("]");
System.out.println("");
System.out.print("[");
for(int i =0;i<b.size();i++){
System.out.print(b.get(i));
}
System.out.print("]");
System.out.println("");
System.out.print("[");
for(int i =0;i<c.size();i++){
System.out.print(c.get(i));
}
System.out.print("]");
System.out.println("");
}
public static void main(String[] args) {
makeA();
move(a.size(),a, b, c, "a", "b","c");
}
}
</pre>