Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Генерироване комбинаций из букв


Автор: temporary 20.2.2007, 16:08
Привет всем!
Тут возникла необходимость в такой функции когда есть некоторое количество букв (цифр) и нужно перечислить все возможные кобинации из них. К примеру из букв: а, б, в
абв
авб
бва
бав
и т.д.
Раньше где-то встречал, а где, хоть убей - не помню. Помогите, очень нужно, хоть алгоритм подскажите.

Автор: W4FhLF 20.2.2007, 16:28
http://forum.vingrad.ru/topic-135849.html

Автор: JusTalionis 20.2.2007, 16:31
На память не помню формулу в точности, - открой справочник по математике, раздел "Комбинаторика", и там как раз эти формулы для всяких случаев.

ЗЫ Эхх, школьные годы забылись уже... Бином Ньютона! smile 

Автор: temporary 20.2.2007, 16:45
Эээ... Может я не точно сформулировал, символы не повторяются, только меняются местами и длина строки остаётся постоянной

Автор: Кирилл 20.2.2007, 21:08
Код

for i=0 to сколько букв
   for j=0 to сколько букв
      if j <>i then print bukva(i)&bukva(j)
   next j
next i

Если 3 буквы, ещё один вложенный цикл...
Комбинаторику я пока ещё не проходил smile , так что пока ничего умнее предложить не могу smile 

Автор: Akina 20.2.2007, 23:51
Код

Sub ShowAllCombinations(Prefix As String, Chars As String)
Dim i As Integer
If Len(Chars) < 2 Then
  Debug.Print Prefix & Chars
Else
  For i = 1 To Len(Chars)
    Call ShowAllCombinations(Prefix & Mid(Chars, i, 1), Left(Chars, i - 1) & Mid(Chars, i + 1))
  Next i
End If
End Sub

Код

Private Sub Command1_Click()
Call ShowAllCombinations("", "abc")
End Sub

Автор: cardinal 21.2.2007, 13:02
Если кто-то не понял что произошло, то советую нарисовать полное дерево рекурсии...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)