Классическими понятиями комбинаторики являются перестановки, размещения и сочетания.
Кстати, в 2006 г. в Питер-БХВ выходила моя книжка "Delphi и Turbo Pascal на занимательных примерах" + CD, в которой я привёл свои программки для перебора этих величин. В частности, дал свою подпрограммку, которая по данной перестановке выводит следующую (или говорит, что задана последняя перестановка). Таким образом, эта подпрограммка выводит все перестановки, причём, каждая отличается от соседних (если их расположить по кругу) ровно одной транспозицией соседних элементов. И ещё вторая половина (N!/2) перестановок зеркально симметрична первой половине, поэтому, можно выводить только половину перестановок.
Когда-то в Фидо в nice.sources спрашивали, как сделать перебор, если заранее неизвестно число циклов? Ведь не напишешь
fot i1:=1 to n do fot i2:=1 to n do ... fot ik:=1 to n do
А вот так и можно его сделать с пом. этой подпрограммки. Алгоритм был мной составлен по идее "лесенки", приведённой в книге М. Гарднера "Путешествие во времени". Там был рекуррентный алгоритм, а я его развил. Ключевую роль там играет колич. беспорядков. IQFun.ru - играем и растём над собой. Авторские игры, головоломки, кроссворды онлайн, интересные статьи.
Сообщение отредактировал IQFun - Чт, 21.11.13, 14:05