2017-04-13 18 views
-4

申し訳ありませんが、これに簡単な解決策がある場合は、数時間それを把握しようとしている、私はコードに問題を見つけるように見えない、何が間違っている可能性がありますか?インデックス外の例外

public static void ShortestPath(int[,] waypoint, int source, int verticesCount) 
     { 
      source = 0; 
      waypoint = new int[verticesCount, verticesCount]; 
      int[] distance = new int[verticesCount]; 
      int[] previous = new int[verticesCount]; 
      PriorityQueue<int> priorityqueue = new PriorityQueue<int>(); 

      for (int i = 0; i < verticesCount; i++) 
      { 
       for (int l = 0; l < verticesCount; l++) 
       { 
        if (waypoint[i, l] != 0) 
        { 
         priorityqueue.Enqueue(i, waypoint[i, l]); 
        } 
       } 
      } 

      while (!priorityqueue.empty() || priorityqueue != null) 
      { 
       int o = priorityqueue.dequeue_min(); 

       for (int v = 0; v < verticesCount; ++v) 
       { 
        previous[v] = 0; 
        MinimumDistance(distance, verticesCount);  
        if (waypoint[o, v] != 0) 
        { 
         if (distance[o] + waypoint[o, v] < distance[v]) 
          distance[v] = distance[o] + waypoint[o, v]; 
         previous[v] = o; 
         priorityqueue.Enqueue(o, distance[v]); 

        } 
         Print(distance[], verticesCount); 
       } 
      } 
+1

あなたはをステップ実行すると、例外がスローさから取得んどこ? – AaronLS

+0

エラーが発生した行はありますか? –

+0

実際の投稿を掲載してください。 – RBarryYoung

答えて

0

私はあなたの問題はあなたが++v代わりのv++を使用しているあなたのwhileループにifであると信じています。

コードは次のようになります。

... 
for (int v = 0; v < verticesCount; v++) 
... 
+0

それがうまくいくかどうかわかります –

+0

ジョン、これで問題は解決しましたか? – Hanno

関連する問題