С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 14.03.2015
Сообщений: 4
1

Сгенерировать все разбиения заданного множества

24.04.2015, 10:19. Показов 1360. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Сгенерировать все разбиения заданного множества.
Нужно написать программу по алгоритму.Спасибо
Алгоритм
1) Поместить все элементы множества в первый блок, т.е. БЛОК[i]=1, i=1,… n.
Положить ВПЕР[i] = true, i = 1,…,n.
2) Положить СЛЕД[1] = 0.
3) Выписать разбиение.
4) Положить j=n ( j – активный элемент).
5) Положить k=БЛОК[j].
6) Если ВПЕР[j]=true, т.е. j движется вперед, то перейти к шагу 7, иначе к
шагу 10.
7) Если СЛЕД[k]=0, т.е. k – последний блок, то положить СЛЕД[k]=j,
ПРЕД[j]=k и СЛЕД[j]=0.
8) Если СЛЕД[k]  j ( j образует новый блок), то ПРЕД[j]=k, СЛЕД[j] =
СЛЕД[k], ПРЕД[СЛЕД[j]]=j, СЛЕД[k]=j.
9) БЛОК[j]=СЛЕД[k] и перейти к шагу 15.
10) Если ВПЕР[j]=false, т.е. j движется назад, то положить БЛОК[j]= =ПРЕД[k].
11) Если k = j, т.е. j образует одноэлементный блок, то перейти к шагу 12,
иначе к шагу 15.
12) Если СЛЕД[k] = 0, то перейти к шагу 13, иначе к шагу 14.
13) Положить СЛЕД[ПРЕД[k]]=0 и перейти к шагу 15.
14) Положить СЛЕД[ПРЕД[k]]=СЛЕД[k], ПРЕД[СЛЕД[k]]= ПРЕД[k].
15) Выписать полученное разбиение.
16) Положить j = n.
17) Если j = 1, то алгоритм заканчивает работу. Если j > 1 и ((ВПЕР[j] and
(БЛОК[j]=j))=true или (not ВПЕР[j] and (БЛОК[j]=1))=true ), то перейти к шагу
18, иначе к шагу 5.
18) Положить ВПЕР[j] = not ВПЕР[j].
19) Положить j = j – 1 и перейти к шагу 17
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.04.2015, 10:19
Ответы с готовыми решениями:

Сформировать два множества, первое из которых содержит все простые числа из заданного множества
Имеется множество, содержащее натуральные числа из некоторого диапазона. Сформировать два...

Используя рекурсивный бэк трэкинг сгенерировать все перестановки заданного числа
Используя рекурсивный бэк трэкинг сгенерировать все перестановки заданного числа n.

Разбиения множества
Добрый вечер. У меня есть множество точек в трехмерном пространстве, которые я считала и занесла в...

Массив: Вывести все подмножества из 2 элементов заданного множества
2. Заданное множество: A = {1,2,3,4,5 } . Вывести все подмножества из 2 элементов заданного...

0
24.04.2015, 10:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.04.2015, 10:19
Помогаю со студенческими работами здесь

Разработать программу, которая генерирует все разбиения множества 1,2,...,n
Помогите с последней задачей. Пожалуйста... Надо разработать программу, которая генерирует все...

Выведите в выходной файл все разбиения n элементного множества на k неупорядоченных множеств
Необходима помощь с заданием, заранее спасибо Во входном файле заданы числа n и k. Выведите в...

Разработать программу, которая находит все разбиения заданного числа
Программу надо написать с помощью процедур.

Разработайте программу, которая находит все разбиения заданного числа
нужно оформить на формах, и с процедурами. Разработайте программу, которая находит все разбиения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru