![]() |
|
Модераторы: Poseidon |
![]()
|
|
| seansy |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 26.3.2007 Репутация: нет Всего: нет |
Дано конечное множество A. Требуется сгенерировать все возможные перестановки его элементов в лексикографическом порядке. Требования к заданию множества - те же, что в предыдущих лабораторных работах. Программа должна сначала упорядочить все элементы заданного множества по возрастанию (это первый - минимальный - набор), затем - посредством МИНИМАЛЬНО ВОЗМОЖНЫХ ПЕРЕСТАНОВОК! - сгенерировать последовательно возрастающие (лексикографически) наборы, вплоть до последнего, в котором все элементы упорядочены по убыванию. Дополнительно: 1) Предоставить пользователю возможность выбора другого варианта работы программы, в котором за исходную точку упорядочивания наборов выбирается не минимальный набор, а тот, который задан пользователем. 2) Оценивать количество возможных перестановок и в случае, если они не поместятся на экран, выполнять их вывод в файл с выдачей на экран соответствующей информации для пользователя или выполнять поэкранный вывод с ожиданием нажатия клавиши. Возможный алгоритм решения (Пример: множество А={1,2,3,4,5,6}, |A| = n): Предположим, что уже построено m наборов. Тогда для получения m+1-го набора: 1) Выполняется проверка последнего (m-го) набора на наличие в его конце некоторого количества символов, упорядоченных по убыванию - пусть это символы ak+1…an. 3 5 2 6 4 1 - k=3, символы с 4-го по 6-й упорядочены по убыванию. 2) Если такое k найдено, то поменять местами k-й элемент и наименьший элемент из ak+1…an, больший этого ak. В нашем примере это 2 и 4: 3 5 4 6 2 1 . 3) После шага 2 упорядочить элементы с k+1-го до последнего по возрастанию. Получен очередной набор ==> выдать его на печать. 3 5 4 1 2 6 . 4) Если на шаге 1 ответ отрицательный, то поменять местами 2 последних элемента и выдать на печать полученный набор. В частности, после шага 3 это неизбежное действие, т.к. все последние элементы были размещены по возрастанию ==> целесообразно после выполнения ш.3 задавать признак его выполнения, который будет анализироваться (и сбрасываться) на шаге 1. После шага 3 было 3 5 4 1 2 6 ==> выдать 3 5 4 1 6 2 . Если был набор 3 5 2 6 1 4 ==> выдать 3 5 2 6 4 1 . 5) Возврат на шаг 1. |
|||
|
||||
| GIK |
|
|||
![]() Добрый человек ![]() ![]() Профиль Группа: Участник Сообщений: 985 Регистрация: 3.6.2005 Где: я только не небыв ал Репутация: 4 Всего: 14 |
Не понятно, как определяется k, он задается пользователем, или определяется исходя из найденного диапазона убывания?
Вото, кое что сделал, можно доработать:
-------------------- Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!! Программирование - это не деятельнось! Программирование - это состояние души! Бог - самый крутой программист. |
|||
|
||||
| seansy |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 26.3.2007 Репутация: нет Всего: нет |
Спасибо GIK! Могу ли я еще с чем-нибудь подобным к тебе обратиться? А то я решаю задачи только школьного курса да и то на Паскале... в нем я тоже могу кого-нибудь выручить...
|
|||
|
||||
| GIK |
|
|||
![]() Добрый человек ![]() ![]() Профиль Группа: Участник Сообщений: 985 Регистрация: 3.6.2005 Где: я только не небыв ал Репутация: 4 Всего: 14 |
Да конечно можно
-------------------- Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!! Программирование - это не деятельнось! Программирование - это состояние души! Бог - самый крутой программист. |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |