![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 10.06.2010
Сообщений: 239
|
![]()
Подскажите алгоритм который перебирает всевозможные комбинации элементов одномерного массива, с учетом того что необязательно использовать все элементы массива.
Задача собственно в следующем: Есть ящик в который можно положить инструменты, Молоток, Пила, Отвертка, Дрель и т.д. (пусть будет 10 инструментов). Так вот я могу положить все инструменты, а могу положить только отвертку и молоток или пилу, дрель и отвертку. Последовательность укладки роли не играет молоток+пила и пила+молоток это одно и тоже. Язык програмирования роли не играет но желательно на C#. В принципе можно просто словами алгоритм описать.
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,542
|
![]()
упорядоченный список пила, отвертка, дрель, ...., молоток, рубанок, НИЧЕГО.
Код:
программа — запись алгоритма на языке понятном транслятору
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 10.06.2010
Сообщений: 239
|
![]()
Что то я не понял решение, можно коментарии какие-нибудь. Вопервых откуда взялось так много ящиков?
На входе есть массив: string[] Instruments = { "Пила", "Молоток", "Отвертка", "Дрель", "Лобзик" }; И где то в цикле должен образовываться временный масив { "Пила", "Молоток" }, потом { "Пила", "Отвертка"}, ..... { "Пила", "Молоток", "Отвертка"}
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 13.12.2007
Сообщений: 788
|
![]()
я могу помочь, но ближе к вечеру, есть готовый алгоритм генерации всех подмножеств массива (что по сути и нужно), но на Delphi, при желании могу словесно описать
если что пиши -392459949
благодарность - сюда (не забываем писать от кого)
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
![]() |
![]() |
![]() |
![]() |
#6 | |||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,542
|
![]()
1.
Цитата:
2. Цитата:
для исключения перестановок (пила рубанок) и (рубанок пила) вводим правило в каждый след. ящик можно класть только предметы имеющие больший номер в нашем списке. (для упрощения конструкций цикла облегчим правило (преметы имеющие такой же или больший номер). 3. Цитата:
P.S. можно избавиться от проверки повторов упорядоченный список пила, отвертка, дрель, ...., молоток, рубанок, НИЧЕГО1 НИЧЕГО2, .... , НИЧЕГО10(по числу ящиков). след(элт) эдемент списка следующий за элт Код:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 14.03.2011 в 18:51. |
|||
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 10.06.2010
Сообщений: 239
|
![]()
evg_m
Спасибо, теперь я разобрался. Только к сожалению меня такое решение не устраивает, т.к. количество циклов привязано к количеству инструментов, и если его менять то получается надо переписывать программу. Я так понимаю тут рекурсию надо использовать, буду сидеть разбираться. Да, так как из число относительно невелико ![]()
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
![]()
Это - "некрасивый" вариант (хотя и работающий). С хранением всего, что нагенерировали, и с проверкой "А было-ли уже?"
Код:
Далi буде... ![]() Последний раз редактировалось Vago; 14.03.2011 в 19:48. |
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
![]()
Без накопления.
Код:
Последний раз редактировалось Vago; 15.03.2011 в 01:16. Причина: Упростил, выбросив флажок... И ещё упростил... |
![]() |
![]() |
![]() |
#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 |