Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Object Pascal: кроссплатформенные технологии > Вывести все подмножества множества |
Автор: Innuendo 6.12.2006, 19:47 |
Блин, вроде программка простенькая, но я с множествами никогда не работал, и чё-то не получается есть множество M=['A','B','C','D'] надо вывести все подмножества. Чё-то не получается.. если бы массив, я бы сделал, а с множествами как-то не особо работается |
Автор: Zero 6.12.2006, 21:03 | ||
Ну общий принцип такой:
|
Автор: volvo877 6.12.2006, 22:17 | ||||
Комбинаторика? Слово "множество", кстати, еще не означает, что тебе надо работать с типом Set ... Вот программа, печатающая все возможные подмножества множества из N элементов:
А уж что именно печатать вместо цифр 1 .. N - это ты и должен брать из своего M... У тебя там символы - значит,
|
Автор: Innuendo 7.12.2006, 22:47 |
Zero, С таким алгоритмом множества по 2, 3, 4 элемента не будут выводится вроде volvo877, Да, комбинаторика... Множества это что-то типа сочетаний. Я сам как раз и написал без множеств SET. Но это задание в учебнике было: есть множество M:=['A','B','C','D'] и надо вывести все подмножества... Типа надо работать именно с сетом, а не с массивами, константами и т.д. |
Автор: Kuvaldis 8.12.2006, 03:15 | ||
volvo877, Это быстрый в написании вариант, но, к сожалению, медленно работающий. (хотя автор и не уточнял про скорость) ![]() Множество представлено вектором наличия. При получении следующего множества нужно стремиться, чтобы оно отличалось от предыдущего как можно меньше, в идеале, в одном месте. Эта проблема генерации решена так
Обоснование можно точно посмотреть в книге Новиков "Дискретная математика для программистов". Да и в Сети думаю, оно есть.... |
Автор: volvo877 8.12.2006, 20:41 |
Kuvaldis, я понимаю, что это - не самый быстрый вариант... Но дело все в том, что ведь и предложенный тобой алгоритм, и любой из... ну, навскидку, еще трех-четырех, которые я смогу привести - не работают со множествами, а только с массивами/числами... Автору, как выяснилось, это не подходит... |
Автор: Innuendo 9.12.2006, 19:46 |
volvo877, а вообще реально это как-то делать с множествами? с множествами не так много операций можно делать... вызов элемента по индексу. Задачку не мне задали, это меня попросили. Я им дал вариант с массив и константой стринговой 'ABCD' из которой вынимались элементы, а с множествами не наю =) Но уже ладно, задание уже не нужно (хотя всё равно интересно, можно ли такое сделать, и если нельзя то почему это задание в конце темы Set и в условии дан set =) ) |