private double[] GetRowArray(double[,] source, int row)
{
double[] result = new double[source.GetLength(1)];
foreach (var index in Enumerable.Range(0, result.Length))
{
result[index] = source[row, index];
}
return result;
}
复制代码
完整代码
public class DijkstraRouter { private double[,] _graph; private List _edges;//所有的边 private List _nodes;//所有的节点 private List _nodeItems; public bool IsRouting { get; set; } private readonly ILogger _logger; public DijkstraRouter(ILogger logger) { _logger = logger; } public Route GetRoute(int startPointID, int endPointID)
{
if (IsRouting)
throw new InvalidOperationException($"can't route.router busy");
IsRouting = true;
Node sNode = null;
Node dNode = null;
try
{
if ((sNode = _nodes.FirstOrDefault(x => x.Id == startPointID)) == null
} public class NodeItem { public bool Used { get; set; } public List Nodes { get; } = new List(); public int NodeId { get; set; } public int Index { get; set; } public double Weight { get; set; } } }