Алгоритм Флойда (графы - поиск кратчайшего пути) - VBA

Узнай цену своей работы

Формулировка задачи:

Собственно очень нужен алгоритм на VBA. Народ если кто то видел, или у кого то есть, поделитесь пожалуйста информацией. Курсяк горит ппц. С другого языка программирования боюсь не осилю перегнать на VBA

Решение задачи: «Алгоритм Флойда (графы - поиск кратчайшего пути)»

textual
Листинг программы
Sub NN()
Dim C() As Double
Dim T() As Double
Dim H() As Double
Dim p As Long
Dim i As Long
Dim j As Long
Dim k As Long
 
ReDim C(1 To p)
ReDim T(1 To p, 1 To p)
ReDim H(1 To p, 1 To p)
 
For i = 1 To p
    For j = 1 To p
        T(i, j) = C(i, j) 'инициализация
        If C(i, j) = БЕСКОНЕЧНОСТЬ Then 'ROFL
           H(i, j) = 0    'нет дуги из i в j
        Else
           H(i, j) = j    'есть дуга из i в j
        End If
    Next
Next
 
For i = 1 To p
    For j = 1 To p
        For k = 1 To p
            If i <> j And T(i, j) <> БЕСКОНЕЧНОСТЬ And _
               i <> k And T(i, k) <> БЕСКОНЕЧНОСТЬ And _
               T(j, k) <> БЕСКОНЕЧНОСТЬ Or _
               T(j, k) > T(j, i) + T(i, k) Then
               H(j, k) = H(i, j)            'запомнить новый путь
               T(j, k) = T(j, i) + T(i, k)  'и его длину
            End If
        Next
    Next
    For j = 1 To p
        If T(j, j) < 0 Then Exit Sub
    Next
Next
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5