Указать минимальное количество первых букв, по которым можно различить слова из заданного набора - VB

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

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

Указать минимальное количество первых букв, по которым можно различить слова из заданного набора(слова разделены пробелами) Вообщем, прошу помощи, алгоритм нужно реализовать без использования массива.

Решение задачи: «Указать минимальное количество первых букв, по которым можно различить слова из заданного набора»

textual
Листинг программы
Function minPref(Stri As String) As Integer
    ':::: Строим индексный указатель
    Ptr$ = ""
    b% = 1
    l% = Len(Stri)
    lmin% = l%
    
    Do
      k% = InStr(b%, Stri, " ")
      If k% = 0 Then
         lc% = l% - b% + 1
         If lc% < lmin% Then lmin% = lc%
         Ptr$ = Ptr$ & Format$(b%, "000")
         Exit Do
      Else
         lc% = k% - b%
         If lc% < lmin% Then lmin% = lc%
         Ptr$ = Ptr$ & Format$(b%, "000")
         b% = k% + 1
      End If
    Loop
    nw% = Len(Ptr$) \ 3 '::: Количество слов
    '::: Цикл до длины минимального слова
    For n% = 1 To lmin%
        '::: Список текущих префиксов
        Tmp$ = ""
        q% = 0
        For i% = 1 To nw%
            '::: Начало очередного слова
            beg% = Val(Mid$(Ptr$, (i% - 1) * 3 + 1, 3))
            '::: Текущий перфикс
            cPref$ = Mid$(Stri$, beg%, n%)
            '::: Проверка: нет ли такого
            For j% = 1 To (i% - 1)
                pPref$ = Mid$(Tmp$, (j% - 1) * n% + 1, n%)
                If pPref$ = cPref$ Then
                   q% = -1  ' есть!
                   Exit For
                End If
            Next j%
            If q% <> 0 Then
               Exit For
            Else             ' нет - добавим
               Tmp$ = Tmp$ + cPref$
            End If
        Next i%
        If q% = 0 Then  ' если префиксы данной длины уникальны - ОК
           minPref = n%
           Exit Function
        End If
    Next n%
    '::: Иначе функция вернет 0 (задача не имеет решения)
End Function

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


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

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

12   голосов , оценка 4.167 из 5
Похожие ответы