2017-04-13 89 views
-4

對不起,如果有一個簡單的解決方案,試圖找出它幾個小時,我似乎無法找到問題的代碼,它可能是錯誤的?Out of index exception

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

我相信你的問題是與ifwhile循環,你正在使用++v代替v++

代碼應該是:

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

好吧,我會看看它是否有效 –

+0

約翰,這是否解決了你的問題? – Hanno