2012-02-19 83 views
1

我正在爲我的Java解決方案收到UVa Online Judge問題的運行時錯誤。我已完成Problem 100,它在我的最後工作。任何想法可能導致這個問題?無法重現UVa Online Judge給我的運行時錯誤

import java.util.ArrayList; 
import java.util.Hashtable; 
import java.util.Scanner; 

class P100 { 

    public static void main(String args[]) { 
     Hashtable<Integer, Integer> solutions = new Hashtable<Integer, Integer>(); 
     Scanner input = new Scanner(System.in); 

     while (input.hasNextInt()) { 
      int lowerBound = input.nextInt(); 
      int upperBound = input.nextInt(); 

      int longestCount = 0; 

      for (int i = lowerBound; i <= upperBound; i++) { 
       int n = i; 
       int count = 1; 

       ArrayList<Integer> sequence = new ArrayList<Integer>(); 

       while (n != 1) { 
        if (solutions.containsKey(n)) { 
         count += solutions.get(n) - 1; 
         break; 
        } 

        sequence.add(n); 

        count += 1; 
        if (n % 2 == 0) n /= 2; 
        else n = 3 * n + 1; 
       } 

       for (int j = 0; j < sequence.size(); j++) { 
        solutions.put(sequence.get(j), count - j); 
       } 

       if (count > longestCount) longestCount = count; 

       solutions.put(i, count); 
      } 

      System.out.printf("%d %d %d\n", lowerBound, upperBound, longestCount); 
     } 
    } 

} 
+0

你得到什麼運行時錯誤?您的JRE/JDK版本可能會有所不同嗎?你的JVM可以不同嗎? – Jeffrey 2012-02-19 23:48:13

+2

@Tyler Crompton:*(不是你的問題的答案,因此評論)* ...沒有理由再使用Java * Hashtable *而不是* HashMap *。 * Hashtable *是遺留代碼(並且因爲很長時間),並且性能會比* HashMap *差。如果您確實需要同步映射,那麼* Collections.synchronizedMap(...)*或* ConcurrentHashMap *(添加方法,如* putIfAbsent *)就是您要查找的內容。在你的情況下你的代碼是單線程的:你只需要一個常規的HashMap。 – TacticalCoder 2012-02-19 23:49:20

+0

@ user988052,謝謝。修正(不是在帖子中,雖然)。 – 2012-02-19 23:56:28

回答

1

您需要重命名

class P100 

public class Main 

當你將代碼複製到UVA或它會告訴你的是,類主沒有被發現。這是這樣的,法官可以運行你的代碼(因爲java需要知道類名)。我自己有時忘記這麼做。

+0

啊,這個修好了。謝謝一堆。現在找出錯誤答案來自哪裏。 *嘆息* – 2012-02-19 23:55:37

+0

@TylerCrompton這個問題很容易暴力破解。不要打擾自己的聰明,因爲你最終可能會在腳下射擊自己;) – 2012-02-19 23:59:03

+0

它在三秒鐘後超時,我的實施已經用了0.83秒(未知輸入)。我無法想象蠻力。 – 2012-02-20 00:05:15

0

我在使用UVa Online Judge時運行我的Java代碼時遇到問題。它可能不是直接關係到你目前的問題,但無論如何看看我的answer,看看它是否有任何幫助。

相關問題