0 / 0 / 0
Регистрация: 03.10.2016
Сообщений: 30
1

Написать программу, реализующую разбиение множества A

01.03.2017, 23:38. Показов 2142. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я считаю, что это задание очень актуально. На мой взгляд, она немного трудна в реализации, поэтому и прошу помощи. Я понимаю, что такое разбиение множества
Допустим, дано множество А={1,3,5,6,7,8}.
Тогда, к примеру, множество А в результате разбиения преобразуется в:
B={1,3,5,6} и C={7,8}.
А как это программно реализовать?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.03.2017, 23:38
Ответы с готовыми решениями:

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

Написать программу, реализующую функцию конкатенации k строк
Заранее благодарю.

Написать программу, реализующую обход доски шахматным конём
Конь находится в клетке (x1,y1).Нужно вывести любой его путь из (x1,y1) в (x2,y2).Если это...

Написать программу, реализующую умножение прямоугольных целочисленных матриц
Написать программу, реализующую умножение прямоугольных целочисленных матриц. у меня ошибка,...

1
Диссидент
Эксперт C
27697 / 17314 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
02.03.2017, 00:28 2
Лучший ответ Сообщение было отмечено Zamaka2016MAKC как решение

Решение

Zamaka2016MAKC, Нужно разбить на два множества? Это не очень сложная задача. Или получить все возможные разбиения?

Добавлено через 13 минут
При разбиении на 2 множества эффективно используется двоичная система счисления. Просто генерируете все числа от 1 до 2n - 2 (обычным циклом). И там, где 0 - это элемент одного множества. 1 - другого.
Если вы знакомы со смешанными системами счисления, то, имхо, и задача о разбиении на произвольное число множеств не покажется такой уж сложной.

Добавлено через 26 минут
Возможно, смешанные системы с/с здесь особо ни при чем. Но они меня натолкнули на мыслю.
Заводим массив m[N]. m[0] = 0 (всегда. ведь какому-то множеству должон принадлежать нулевой элемент. Пусть это множество имеет номер 0)
m[1] = или 0 (тому же множеству) или 1 (другому)
m[k] может принимать значения от 0 до max(m[i], i<k) + 1 (условие X)
для начала все m[i] = 0. Это дает тривиальное разбиение на одно множество
Цикл: Прибавляем к последнему m[N-1] по 1, пока выполняется условие Х
Как только это условие перестало выполняться, идем назад, и прибавляем 1 к первому же встречному, для кого при этом не нарушится условие Х. И все большие m[i] (i > измененного) обнуляем.
Возвращаемся в точку Цикл.
Понятно, что из цикла брекаемся, когда не удалось найти этого первого встречного
Ох! Давненько я не описывал словами алгоритмы! Но в этом тоже есть свой кайф.

Добавлено через 4 минуты
Цитата Сообщение от Байт Посмотреть сообщение
Просто генерируете все числа от 1 до 2n - 2 (обычным циклом). И там, где 0 - это элемент одного множества. 1 - другого.
Кстати, тут я слегка (в 2 раза) ошибся. Этот алгоритм будет выдавать разбиения (1,2) (3,4) и (3,4) (2,1) как разные
1
02.03.2017, 00:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.03.2017, 00:28
Помогаю со студенческими работами здесь

нужно написать программу на с++ реализующую все возможности печатной машинки
печатная машинка должна: - с клавиатуры непосредственно на экран выводятся только символы,...

Написать программу, реализующую умножение прямоугольных целочисленных матриц (ошибка)
Пыталась написать программу, но выводит шлак. Для квадратных матриц работает, как ни странно, для...

Написать программу, реализующую алгоритм шифрования и дешифрования сообщения RSA
Помогите написать программу, реализующую алгоритм шифрования и дешифрования сообщения RSA. Входные...

Написать программу, реализующую сортировку одномерного массива методом обмена.(Найти количество перестановок элементов)
Написать программу, реализующую сортировку одномерного массива методом обмена.Найти количество...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru