| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
我该咋办。。。java.lang.StackOverflowError。。。555555import java.io.*;
import java.util.StringTokenizer;
import java.math.*;
public class CEOI2003hanoi2 {
public int[] pileofDisc;
public static int numMoves = 0;
public CEOI2003hanoi2() {
}
public void moveDisc(int maxofDisc,
int dstPile) {
if (maxofDisc < 1) {
return;
}
int srcPile = pileofDisc[maxofDisc];
int auxPile = 1 + 2 + 3 - srcPile - dstPile;
if (srcPile != dstPile) {
moveDisc(maxofDisc - 1, auxPile);
int pow = 1;
for (int i = 1; i < maxofDisc; i++) {
pow = 2 * pow % 1000000;
}
numMoves = (int) (numMoves + pow) % 1000000;
for (int i = 1; i <= maxofDisc; i++) {
pileofDisc[i] = dstPile;
}
}
else {
moveDisc(maxofDisc - 1, dstPile);
}
}
public void Start(int numberofDisc, int maxDisc
) throws
Exception {
moveDisc(numberofDisc-1, maxDisc);
System.out.println(pileofDisc[numberofDisc]);
System.out.println(numMoves);
}
public static void main(String[] args) throws Exception {
CEOI2003hanoi2 c2 = new CEOI2003hanoi2();
BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
String teststring = r.readLine();
Integer y = new Integer(teststring);
int numberofDisc = y.intValue();
c2.pileofDisc = new int[numberofDisc + 1];
teststring = r.readLine();
for (int i = 0; i < 3; i++) {
teststring = r.readLine();
StringTokenizer st = new StringTokenizer(teststring);
String s1 = "";
while (st.hasMoreTokens()) {
s1 = st.nextToken();
y = new Integer(s1);
int temp = y.intValue();
c2.pileofDisc[temp] = i + 1;
}
}
c2.Start(numberofDisc, c2.pileofDisc[numberofDisc]);
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator