Сочетания.
Мне нужно, в частности, сгенерировать сочетания из 16-ти элементов по 3-и и записать все эти сочетания в массив.
Возвратный алгоритм тебе в руки. Это примерно так: массив с сочетанием, позиция в нем. Продвигаясь вправо, добавляешь новый элемент, дошел до упора - выводишь. Потом - назад, и берешь уже другой элемент(не тот, что был а этом месте раньше). И т.д.
Тупо генеришь три случайных числа - вот тебе одно сочетание. Делаешь столько сочетаний, сколько надо и добавляешь их в массив.
Мне же не случайные сочетания нужны. Именно я не знаю как генерировать сочетания - вот в чем проблема. В литературе написанно как-то слишком для меня не понятно.
переменные циклов x,y,z образуют комбинацию из трёх букав ... ой ... цыфер ))
переменные циклов x,y,z образуют комбинацию из трёх букав ... ой ... цыфер ))[/quote]
не универсально.
Eternal Man
http://www.piter.com/chapt.phtml?id=978546900444
ищешь в тексте следующее:
[quote=]Листинг 2.40. Программа, выводящая в лексикографическом порядке все сочетания из N латинских букв по M[/quote]
чуть выше описан алгоритм, а ниже листинг программы - его и смотришь.
и не надо ему универсальную . если бы было произвольное кол-во цифер , то тогда нужно универсальную .
[QUOTE=.nornad]Тупо генеришь три случайных числа - вот тебе одно сочетание. Делаешь столько сочетаний, сколько надо и добавляешь их в массив.[/QUOTE]
Что!!! Ну и варинтец)))
А потом Windows виснет!
[QUOTE=koderAlex]три for-а с 1 до 16 вложенные друг в друга .
переменные циклов x,y,z образуют комбинацию из трёх букав ... ой ... цыфер ))[/QUOTE]
Так понял всем установка - "учим, что такое сочетание"
у тя получаеться 16^3 = 4096 ((( перестановок, уф!
В данном случае их 560 всего.
2 Eternal Man Если не догадаешься завтра попробую, если не позно будет, помочь
Ну, а ссылочка, которую дал kosfiz, разве не проходит? На мой скромный взгляд, там все, что нужно. Тема - то достаточно простая, а тут такое бурное обсуждение.
Если они преведены - нужно покритиковать, а то вводят, понимаешь, в заблуждение людей)
з.ы. Общественность на стреме!
Так понял всем установка - "учим, что такое сочетание"
у тя получаеться 16^3 = 4096 ((( перестановок, уф!
В данном случае их 560 всего.
[/QUOTE]
это принцип .
вставить строчку вида :
if((x=y)or(y=z)or(z=x)){...}else{...};
можно и самому . )
Почитай, чо такое сочетания)
Все сочитания из 16 по 3 - это все трёхзнаковые числа в 16ричной системе, исключая те в которых символы повторяються, так что достаточно одного цикла и одного условия.
[QUOTE=Bomon]Все сочитания из 16 по 3 - это все трёхзнаковые числа в 16ричной системе, исключая те в которых символы повторяються, так что достаточно одного цикла и одного условия.[/QUOTE]