![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 06.01.2015
Сообщений: 8
|
![]()
Всем доброго времени суток. Суть задачи такова, необходимо вывести все возможные перестановки заданных целых чисел и кол-во самих перестановок. Допустим, указали 3 числа: 1, 2 и 3. Программа выведет 123, 132, 213, 231, 312, 321. Моя проблема заключается в том, что если ввести повторяющиеся числа, то программа их игнорирует. Т.е. если ввести, допустим, 1, 2 и 2, то по идее должны получить 122, 212 и 221, кол-во перестановок, таким образом, равняется 3, а у меня программа видит только 1 и 2, соответственно расчеты происходят неверно.
Самое главное - программа должна быть РЕКУРСИВНОЙ! Код прилагаю ниже, надеюсь на ваши доработки. И да, совсем забыл, работаю в Pascal ABC. Код:
Последний раз редактировалось Stilet; 14.04.2015 в 07:30. |
![]() |
![]() |
![]() |
#2 | |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
![]() Цитата:
Есть два вариант генерирования всех перестановок : 1) Рекурсивный вариант 2) Крутить next_permutation Рекурсивный вариант : 1) даст Вам перестановки в произвольном порядке 2) кол-во перестановок при любом раскладе будет равно N! (где N длина исходной последовательности) Ессесно это можно исправить : запоминать перестановки (а потом отсортировать (сложность только возрастет)) или сделать такую классную вещь (тут разговоры про сложность лишены смысла) : тыц (именно это и есть решение твоей задачи!) |
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 06.01.2015
Сообщений: 8
|
![]()
Благодарю, воспользуюсь методами из упомянутой вами темы. Никогда не думал, что простая на первый взгляд программа может оказаться настолько запаренной.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Деление, умножение, суммирование, хэлпа нужна очень... почти готов код | OldStile | Помощь студентам | 2 | 20.03.2015 17:52 |
Небольшая доработка сайта, платно | aborsp | Фриланс | 0 | 01.03.2013 18:07 |
небольшая доработка | siner | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 05.11.2012 16:06 |
Доработка парсера. Готов на 80% | gemiroquai | Фриланс | 0 | 02.04.2012 11:12 |
Нужно исправить код. Он готов, но нужна проверка и доработка. | Forbesii | Фриланс | 2 | 24.12.2010 23:09 |