Показать сообщение отдельно
  #2  
Старый 14.12.2012, 09:34
MBo MBo вне форума
Местный

Отправить личное сообщение для MBo Посмотреть профиль Найти все сообщения от MBo
 
Регистрация: 21.09.2006
Адрес: Новосибирск
Сообщений: 1,374

Это называется сочетания (combination)
Здесь на сайте есть общее описание. Реализация наверняка в форуме имеется.
Кроме того, см.
http://e-maxx.ru/algo/generating_combinations

А проще всего (не самый эффективный, но это не всегда имеет значение) рекурсивный алгоритм
Код:
procedure Combine(Array, StartIndex, CountLeft, Combination)
  if CountLeft = 0 then
    вывести Combination
  else
    for i := StartIndex to Length(Array) - CountLeft do
        Combine(Array, i + 1, CountLeft - 1, Combination + Array[i])

Последний раз редактировалось MBo, 14.12.2012 в 09:36.