2013-08-23 45 views
-1

我有以下代碼。我創建了一個列表(與數組一起嘗試)與一百萬和一個成員。所有這些都默認值爲0。它應該像一個多維數組一樣工作,但它不是必需的,因爲第一個'列'必須是1-1.000.000的數字。爲了讓生活更輕鬆,我讓1.000.001成員避免使用第0位。 在某個時候,我必須使用這個列表中的一個成員,這個成員由一個變量:list [n]來處理,並且爲了避免這個問題,只有當n < 1.000.000時纔會發生。由於有成員從0-1.000.000我認爲這是好的,但仍然我的程序崩潰後一段時間的錯誤代碼ArgumentOutOfRangeException。 我在這裏錯過了什麼?列表/數組成員無法解決 - 歐拉14

  int highestCount = 0; 
      int highestNum = 0; 
      List<int> list = new List<int>(); 
      for(int j = 0; j <= 1000001; j++) 
      { 
       list.Add(0); 
      } 
      for (int i = 2; i < 1000000; i++) 
      { 
       int count = 0; 
       int number = i; 
       do 
       { 
        if (i % 2 == 0) 
        { 
         number = number/2; 
         if (number < 1000000) 
         { 
          if (list[number] != 0) 
          { 
           count += list[number]; 
           break; 
          } 
          else 
          { 
           count++; 
          } 
         } 
         else { count++; }; 
        } 
        else 
        { 
         number = (number * 3) + 1; 
         if (number < 1000000) 
         { 
          if (list[number] != 0) //program dies here 
           { 
            count += list[number]; 
            break; 
           } 
          else 
          { 
          count++; 
          } 
         } 
         else { count++; }; 

        } 
       } while (number > 1); 
       list[i] = count; 
       if (count > highestCount) 
       { 
        highestCount = count; 
        highestNum = i; 
       } 

      } 
      MessageBox.Show(highestNum.ToString()); 
+0

使用調試器查找索引。 – SLaks

+0

100663842,不應該檢查 – fishmong3r

+0

_爲了讓生活更輕鬆_你應該快速習慣'0..n-1'模式。 –

回答

2

我認爲這只是你的邏輯問題。

當i == 3(第二次運行)時,它將進入do-while模塊。 由於i%2!= 0,所以它會碰到else。 數乘以3,你加1 這是少超過100萬,但....

if(list[number] != 0) 

從不計算真實,你停留在一個無限do-while循環,它從來沒有休息因爲A)號碼總是大於1(滿足條件);和B)您將該數組中的每個元素設置爲該循環上方的代碼中的零(因此從未滿足上述條件):

for(int j = 0; j <= 1000001; j++) 
{ 
    list.Add(0); 
} 
+0

它有1.000.001。但仍然。 – fishmong3r

+0

仔細檢查,我稍後定義列表元素:list [i] = count;我只想運行該部分如果它不是0,所以只有情況下,如果我定義了其他值。 – fishmong3r

+2

運行i = 3的for循環。 'if'(i%2 == 0)'是數字嗎? –