2017-04-13 203 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