我一直在毆打我的頭靠在牆上試圖弄清楚爲什麼這會返回「錯誤的答案」。我非常感謝任何反饋。(還有另外一個)UVa 3n + 1幫助問題
編輯:我轉發了代碼,並且此版本通過允許數字對之間有多個空格來最終修復了「運行時錯誤」。它現在說的是「錯誤的答案」,但據我所知,我逐字地複製了給定的算法,所以我不知所措。
謝謝。
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
Main mine = new Main();
mine.begin();
}
public void begin(){
BufferedReader sys = new BufferedReader(new InputStreamReader(System.in));
String[] pair;
try{
while((pair=sys.readLine().split(" +")).length==2){
System.out.println(pair[0]+ " " +pair[1] + " " + getMax(Integer.parseInt(pair[0]),Integer.parseInt(pair[1])));
}
}catch(IOException ex){
return;
}
}
private String getMax(int a, int b){
int maxcount,thiscount, num, n;
for(maxcount = -1, num =Math.min(a, b); num <= Math.max(a, b); num++){
for(n = num, thiscount = 1; n!=1; thiscount++){
if(n%2==0)n=n/2;
else n = 3*n +1;
}
if(thiscount>maxcount) maxcount = thiscount;
}
return String.valueOf(maxcount);
}
}
牆的代碼在這裏沒有幫助。你能縮小這個問題嗎? – 2010-10-03 04:59:44
這是告訴我,代碼編譯和運行良好,但它無法解決問題。我真的不知道爲什麼它說錯了答案,但該「alforithm」位於getMax,getCount方法。 – James 2010-10-03 05:03:58
您是否至少將樣本輸出與樣本輸入相匹配?您需要考慮可能適用於問題並處理所有問題的任何案例。 – 2010-10-03 05:18:20