![]() |
|
|
![]()
|
|
| D@mon |
|
|||
|
Unregistered |
Есть N элементов, N - заранее не известно, нужно перебрать элементы след. образом:
по одному, по два и т.д. Алгоритм д.б. простой, но что никак не сообразить |
|||
|
||||
| MBo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 234 Регистрация: 10.6.2002 Репутация: 5 Всего: 18 |
Всех таких комбинаций, как легко увидеть - 2^N - в наборе элемент либо есть, либо его нет, так что можно просто сделать цикл от 0 (или от 1, если пустой набор не нужен) до 2^N-1.
Единичный бит на k-ом месте в счетчике цикла означает присутствие элемента. Требование к порядку - сначала по одному, потом по два - маленько усложняет логику, но не настолько, чтобы не догадаться. Возможны как рекурсивные решения (проще, но при больших числах не очень эффективно), так и нерекурсивные. |
|||
|
||||
| D@mon |
|
|||
|
Unregistered |
спасибо
|
|||
|
||||
| yaja |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 30.3.2005 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Была у меня такая задачка на одной из контрольных. Написал рекурсией, но легко переделать и без её использования
По научному задача состоит в том, что нужно перебрать в лексеграфическом порядке все подмножества данного множества из n элементов(у меня в проге считается, что все элементы-натуральные числа в диапозоне 1..n)
Если чтобы работало быстрее, то не выводи очередное подмножество, а сливай его в буфер, а потом одним разом выводи буфер и избавься от рекурсии Это сообщение отредактировал(а) yaja - 10.4.2005, 11:10 |
|||
|
||||
| Kolia |
|
|||
|
Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 132 Регистрация: 11.7.2003 Где: Вильнюс Репутация: нет Всего: нет |
А комп не загнется все варианты перебирать? Возьми строку из 20 элементов. Количество вариантов - 20! (факториал). Число далеко не маленькое.
--------------------
Риспект |
|||
|
||||
| yaja |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 30.3.2005 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Если верить словам моего препода по физике, то для вычисления каких-то величин из квантовой механики необходимо перебрать все перестановки для нескольких тысяч элементов... |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |