C# Есть код алгоритма Дейкстры на C++, как его можно преобразовать на язык C#?
Формулировка задачи:
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace ConsoleApplication1
- {
- class Program
- {
- static void Main(string[] args)
- {
- const int N = 1000; // количество вершин
- // матрица смежности: adj_matrix[i][j] == true,
- // если между вершинами i и j существует ребро
- bool adj_matrix = [N][N];
- int cost = new int [N][N]; // веса рёбер
- /*********************************************/
- /*********Результаты работы алгоритма*********/
- int dist = new int [N]; // расстояния от заданной вершины
- int parent = new int [N]; // из какой вершины пришли;
- // служит для восстановления маршрута
- void dijkstra(int start);
- }
- /*********************************************/
- // start -- вершина, от которой считаем расстояния
- public static void dijkstra(int start)
- {
- // in_tree[i] == true, если для вершины i
- // уже посчитано минимальное расстояние
- bool in_tree[N] = {false};
- for(int i = 0; i < N; i++)
- dist[i] = INT_MAX; // машинная бесконечность,
- // т. е. любое расстояние будет меньше данного
- dist[start] = 0; // понятно почему, не так ли? ;)
- int cur = start; // вершина, с которой работаем
- // пока есть необработанная вершина
- while(!in_tree[cur])
- {
- in_tree[cur] = true;
- for(int i = 0; i < N; i++)
- {
- // если между cur и i есть ребро
- if(adj_matrix[cur][i])
- {
- // считаем расстояние до вершины i:
- // расстояние до cur + вес ребра
- int d = dist[cur] + cost[cur][i];
- // если оно меньше, чем уже записанное
- if(d < dist[i])
- {
- dist[i] = d; // обновляем его
- parent[i] = cur; // и "родителя"
- }
- }
- }
- // ищем нерассмотренную вершину
- // с минимальным расстоянием
- int min_dist = INT_MAX;
- for(int i = 0; i < N; i++)
- {
- if(!in_tree[i] && dist[i] < min_dist)
- {
- cur = i;
- min_dist = dist[i];
- }
- }
- }
- // Теперь:
- // в dist[i] минимальное расстояние от start до i
- // в parent[i] вершина, из которой лежит оптимальный путь в i
- }
- }
- }
Решение задачи: «C# Есть код алгоритма Дейкстры на C++, как его можно преобразовать на язык C#?»
textual
Листинг программы
- public Node Previous { get; set; }
- public double Price { get; set; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д