Указать минимальное количество первых букв, по которым можно различить слова из заданного набора - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д