【发布时间】:2017-09-10 02:54:33
【问题描述】:
对不起,如果有一个简单的解决方案,已经尝试了几个小时,我似乎无法找到代码的问题,它可能有什么问题?
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);
}
}
【问题讨论】:
-
单步执行时,异常是从哪里抛出的?
-
错误发生在哪一行?
-
请发布实际错误。
-
另外,PriorityQueue 类的实现在哪里?
-
你知道你可以问一个数组有多大吗?我敢打赌,您的航点数组的尺寸不是 verticesCount