![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Алгоритм нахождения всех перестановок [D7, WinXP]
Walkie Talkie © (2004-06-10 16:11:00)Блин, чё-то сообразить никак не могу... парюсь с этим рекурсивом...
В общем есть такое: obj: array[1..10] of string;
а result:=obj[1]+obj[2]+...+obj[10];
Вот нужно создать прогу, которая "перетасовывала" этот obj, чтобы получить все возможные перестановки... их N!... в данном случае 10!
реализация нужна для любого количеста элементов...
Walkie Talkie (2004-06-11 00:27:00) [1]
> http://algolist.manual.ru/maths/combinat/permutations.php
Как это я не заметил спасибо... хотя не совсем то, но я уже адаптировал.
Кто столкнётся с такой же проблемой - используйте второй, рекурсивный алгоритм - его проще понять и он более универсален, так как первй использует то, что все символы - цифры, да и ещё в возрастающем порядке... частный случай в общем...
Aldor (2004-06-11 00:05:00) [2]default © (10.06.04 22:28) [6]
у Кнута по-моему больше теор-ки этот момент разобран...
Не могу сказать точно, под рукой сейчас нет, но даже если там не приведен код на mix-assembler'е (что, скорее всего автору поста не понадобится), то там алгроитм описан словесно - для таких простых алгоритмов этого, мне кажется, вполне достаточно.
default (2004-06-10 22:28:00) [3]Aldor © (10.06.04 22:21) [4]
у Кнута по-моему больше теор-ки этот момент разобран...могу ошибаться
default (2004-06-10 22:24:00) [4]http://algolist.manual.ru/maths/combinat/permutations.php
Aldor (2004-06-10 22:21:00) [5]Во-первых www.google.com + "permutation generation"
Во-вторых, Кнут, первый том, описан не один оригальный способ, в частности http://acm.uva.es/p/v100/10063.html.
Удачи!
GuAV (2004-06-10 22:11:00) [6]похожую задачку уже решал:
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1086250968&n=0
Walkie Talkie (2004-06-10 19:56:00) [7]
> раз тебе нужно реализовать задачу именно рекурсивно
а разве можно по-другому?
PS Хотелось бы более практический совет...
MBo (2004-06-10 16:33:00) [8]именно строки переставлять нужно?
начни с символов или небольших чисел.
Включи голову - раз тебе нужно реализовать задачу именно рекурсивно, и известно, что количество вариантов N! - значит, процедура будет вызывать себя с изменяющимся на единицу аргументом - вот от этого и пляши.