public static void m00(java.util.Stack a, java.util.Stack a0, java.util.Stack a1) { a0.push(a.pop()); f00 = f00 + 1; Main.m20(); a1.push(a.pop()); f00 = f00 + 1; Main.m20(); a1.push(a0.pop()); f00 = f00 + 1; Main.m20(); }
public static int m10(int i, java.util.Stack a, java.util.Stack a0, java.util.Stack a1) { if (i > 4) { Main.m10(i - 2, a, a0, a1); a0.push(a.pop()); f00 = f00 + 1; Main.m20(); Main.m10(i - 2, a1, a, a0); a1.push(a.pop()); f00 = f00 + 1; Main.m20(); Main.m10(i - 1, a0, a, a1); return 1; } if (i % 2 != 0) { if (i == 1) { return -1; } Main.m00(a, a1, a0); a1.push(a.pop()); f00 = f00 + 1; Main.m20(); Main.m00(a0, a, a1); } else { Main.m00(a, a0, a1); int i0 = i - 1; if (i0 == 1) { return 1; } a0.push(a.pop()); f00 = f00 + 1; Main.m20(); Main.m00(a1, a, a0); a1.push(a.pop()); f00 = f00 + 1; Main.m20(); Main.m10(i0, a0, a, a1); } return 1; }
public static void main(String[] a) { try { while (true) { System.out.print("\nEnter the number of discs (-1 to exit): "); String s = new java.io.BufferedReader((java.io.Reader) new java.io.InputStreamReader(System.in)) .readLine(); f00 = 0; int i = Integer.parseInt(s); if (i == -1) { break; } { if (i > 1 && i < 10) { int i0 = i; while (i0 >= 1) { f10.push((Object) Integer.valueOf(i0)); i0 = i0 - 1; } f40 = f10.size(); f50 = f20.size(); f60 = f30.size(); Main.m20(); Main.m10(i, f10, f20, f30); System.out.println(new StringBuilder().append("Total Moves = ").append(f00).toString()); while (f30.size() > 0) { f30.pop(); } continue; } System.out.println("Enter between 2 - 9"); } } System.out.println("Good Bye!"); } catch (Exception a0) { a0.printStackTrace(); return; } }