0 / 0 / 0
Регистрация: 14.03.2015
Сообщений: 4
|
|
1 | |
Сгенерировать все разбиения заданного множества24.04.2015, 10:19. Показов 1360. Ответов 0
Метки нет (Все метки)
Сгенерировать все разбиения заданного множества.
Нужно написать программу по алгоритму.Спасибо Алгоритм 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
|
24.04.2015, 10:19 | |
Ответы с готовыми решениями:
0
Сформировать два множества, первое из которых содержит все простые числа из заданного множества Используя рекурсивный бэк трэкинг сгенерировать все перестановки заданного числа Разбиения множества Массив: Вывести все подмножества из 2 элементов заданного множества |
24.04.2015, 10:19 | |
24.04.2015, 10:19 | |
Помогаю со студенческими работами здесь
1
Разработать программу, которая генерирует все разбиения множества 1,2,...,n Выведите в выходной файл все разбиения n элементного множества на k неупорядоченных множеств Разработать программу, которая находит все разбиения заданного числа Разработайте программу, которая находит все разбиения заданного числа Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |