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

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

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

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

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

textual
Листинг программы
  1. Function minPref(Stri As String) As Integer
  2.     ':::: Строим индексный указатель
  3.    Ptr$ = ""
  4.     b% = 1
  5.     l% = Len(Stri)
  6.     lmin% = l%
  7.    
  8.     Do
  9.       k% = InStr(b%, Stri, " ")
  10.       If k% = 0 Then
  11.          lc% = l% - b% + 1
  12.          If lc% < lmin% Then lmin% = lc%
  13.          Ptr$ = Ptr$ & Format$(b%, "000")
  14.          Exit Do
  15.       Else
  16.          lc% = k% - b%
  17.          If lc% < lmin% Then lmin% = lc%
  18.          Ptr$ = Ptr$ & Format$(b%, "000")
  19.          b% = k% + 1
  20.       End If
  21.     Loop
  22.     nw% = Len(Ptr$) \ 3 '::: Количество слов
  23.    '::: Цикл до длины минимального слова
  24.    For n% = 1 To lmin%
  25.         '::: Список текущих префиксов
  26.        Tmp$ = ""
  27.         q% = 0
  28.         For i% = 1 To nw%
  29.             '::: Начало очередного слова
  30.            beg% = Val(Mid$(Ptr$, (i% - 1) * 3 + 1, 3))
  31.             '::: Текущий перфикс
  32.            cPref$ = Mid$(Stri$, beg%, n%)
  33.             '::: Проверка: нет ли такого
  34.            For j% = 1 To (i% - 1)
  35.                 pPref$ = Mid$(Tmp$, (j% - 1) * n% + 1, n%)
  36.                 If pPref$ = cPref$ Then
  37.                    q% = -1  ' есть!
  38.                   Exit For
  39.                 End If
  40.             Next j%
  41.             If q% <> 0 Then
  42.                Exit For
  43.             Else             ' нет - добавим
  44.               Tmp$ = Tmp$ + cPref$
  45.             End If
  46.         Next i%
  47.         If q% = 0 Then  ' если префиксы данной длины уникальны - ОК
  48.           minPref = n%
  49.            Exit Function
  50.         End If
  51.     Next n%
  52.     '::: Иначе функция вернет 0 (задача не имеет решения)
  53. End Function

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


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

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

12   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы