|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.03.2011, 11:55 | #1 |
Форумчанин
Регистрация: 10.06.2010
Сообщений: 239
|
Перебор комбинаций
Подскажите алгоритм который перебирает всевозможные комбинации элементов одномерного массива, с учетом того что необязательно использовать все элементы массива.
Задача собственно в следующем: Есть ящик в который можно положить инструменты, Молоток, Пила, Отвертка, Дрель и т.д. (пусть будет 10 инструментов). Так вот я могу положить все инструменты, а могу положить только отвертку и молоток или пилу, дрель и отвертку. Последовательность укладки роли не играет молоток+пила и пила+молоток это одно и тоже. Язык програмирования роли не играет но желательно на C#. В принципе можно просто словами алгоритм описать.
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
|
14.03.2011, 15:10 | #2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,527
|
упорядоченный список пила, отвертка, дрель, ...., молоток, рубанок, НИЧЕГО.
Код:
программа — запись алгоритма на языке понятном транслятору
|
14.03.2011, 15:40 | #3 |
Форумчанин
Регистрация: 10.06.2010
Сообщений: 239
|
Что то я не понял решение, можно коментарии какие-нибудь. Вопервых откуда взялось так много ящиков?
На входе есть массив: string[] Instruments = { "Пила", "Молоток", "Отвертка", "Дрель", "Лобзик" }; И где то в цикле должен образовываться временный масив { "Пила", "Молоток" }, потом { "Пила", "Отвертка"}, ..... { "Пила", "Молоток", "Отвертка"}
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
|
14.03.2011, 15:51 | #4 |
Форумчанин
Регистрация: 13.12.2007
Сообщений: 788
|
я могу помочь, но ближе к вечеру, есть готовый алгоритм генерации всех подмножеств массива (что по сути и нужно), но на Delphi, при желании могу словесно описать
если что пиши -392459949
благодарность - сюда (не забываем писать от кого)
|
14.03.2011, 17:38 | #5 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
|
14.03.2011, 18:48 | #6 | |||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,527
|
1.
Цитата:
2. Цитата:
для исключения перестановок (пила рубанок) и (рубанок пила) вводим правило в каждый след. ящик можно класть только предметы имеющие больший номер в нашем списке. (для упрощения конструкций цикла облегчим правило (преметы имеющие такой же или больший номер). 3. Цитата:
P.S. можно избавиться от проверки повторов упорядоченный список пила, отвертка, дрель, ...., молоток, рубанок, НИЧЕГО1 НИЧЕГО2, .... , НИЧЕГО10(по числу ящиков). след(элт) эдемент списка следующий за элт Код:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 14.03.2011 в 18:51. |
|||
14.03.2011, 19:06 | #7 |
Форумчанин
Регистрация: 10.06.2010
Сообщений: 239
|
evg_m
Спасибо, теперь я разобрался. Только к сожалению меня такое решение не устраивает, т.к. количество циклов привязано к количеству инструментов, и если его менять то получается надо переписывать программу. Я так понимаю тут рекурсию надо использовать, буду сидеть разбираться. Да, так как из число относительно невелико (я думаю до ста миллионов меня устроит)
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
|
14.03.2011, 19:46 | #8 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
Это - "некрасивый" вариант (хотя и работающий). С хранением всего, что нагенерировали, и с проверкой "А было-ли уже?"
Код:
Далi буде... Последний раз редактировалось Vago; 14.03.2011 в 19:48. |
14.03.2011, 22:35 | #9 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
Без накопления.
Код:
Последний раз редактировалось Vago; 15.03.2011 в 01:16. Причина: Упростил, выбросив флажок... И ещё упростил... |
16.03.2011, 13:21 | #10 |
Форумчанин
Регистрация: 10.06.2010
Сообщений: 239
|
Спасибо Vago. Я решил остановиться на варианте перебора по маске.
Код:
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проверка комбинаций в покере. | dixonich | Помощь студентам | 6 | 01.02.2011 01:47 |
Перебор возможных комбинаций в матрице N*N | Руслан_911 | Помощь студентам | 3 | 25.11.2010 20:35 |
Вычисление множества комбинаций | phobia | Помощь студентам | 3 | 17.11.2010 10:56 |
Перебор возможных комбинаций символов | Toxask8 | Общие вопросы C/C++ | 1 | 12.12.2009 21:33 |
Delphi. Проверка комбинаций | Zhamie | Помощь студентам | 7 | 15.09.2009 11:39 |