我剛從編程挑戰開始,試着解決3n+1 problem。我的程序在UVA判斷中給出了RUNTIME ERROR,在編程挑戰判斷中給出了WRONG ANSWER。但是我沒有在程序中發現任何錯誤..所有的測試用例都給出了正確的答案。有誰可以告訴我什麼可能是錯誤的我的Java 3n + 1解決方案判斷錯誤/運行時錯誤,爲什麼?
1: import java.io.*;
2: import java.util.*;
3: class Main{
4: public static void main(String args[]) throws IOException{
5: BufferedReader br=new BufferedReader(new
InputStreamReader(System.in));
6: String s,ar[];
7: long aray[]=new long[50];
8: int n=0,maxcount=0,count;
9: long t,a,b,c=1,co=0;
10: while((s=br.readLine()).length()>0) {
11: ar=s.split(" ");
12: aray[n++]=Long.parseLong(ar[0]);
13: aray[n++]=Long.parseLong(ar[1]);
14: }
15:
16: for(int j=0;j<n;) {
17: c=1;
18: maxcount=0;
19: a=aray[j++];
20: b=aray[j++];
21: co=b-a+1;
22: if(a>b){ //special case
23: c=-1;
24: co=a-b+1;
25: }
26: for(long i=a,k=0;k<co;i+=c,k++){
27: t=i;
28: count=1;
29: while(t!=1){
30: if(t%2==0) t=t/2;
31: else t=(3*t)+1;
32: count++;
33: }
34: maxcount=(maxcount>count)?maxcount:count;
35: }
36: System.out.println(a+" "+b+" "+maxcount);
36: System.exit(0);
38: }
39: }
的指針賦值會很酷的bug(一個或多個)。和代碼格式(縮進)。並使用可讀名稱作爲變量名稱。 – 2010-12-14 07:15:02
順便說一句 - 你並不孤單:[這是關於該任務的另一個問題](http://stackoverflow.com/questions/1997215/why-is-my-3n1-problem-solution-wrong)。 – 2010-12-14 07:17:04
除了有意義的單元測試之外,我還建議您也使用方法來分解代碼和有意義的變量名稱。有很多地方你的代碼可能會被炸燬,你知道運行時異常是什麼嗎? – 2010-12-14 07:58:45