![]() |
|
|
![]()
|
|
| TP@MB@Y |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: нет Всего: 4 |
Вобщем на входе есть матрица, например вот такая:
0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 на выходе мне нужно получить все возможные вектора, содержащие номера столбцов с единицами. т.е. в данном случае это будут: (2 4 1 1 5), (5 4 1 1 5), (2 4 1 5 5), (5 4 1 5 5) для этого я написал рекурсию, но она почемуто неработает вот сам код (алгоритм) рекурсии (на паскале)
Может рекурсия не самый лучшый выход для решения этой задачи? Это сообщение отредактировал(а) TP@MB@Y - 29.10.2006, 17:24 |
|||
|
||||
| TP@MB@Y |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: нет Всего: 4 |
Попробую перефразировать задачу.
Нужны все варианты этой матрицы чтобы по строкам было не более одной единицы. |
|||
|
||||
| anwe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: нет Всего: 23 |
А в матрице только нули и единицы? Если да, то стоит проссумировать строки. Если реузльтат 1 - это та строка, которая подходит.
|
|||
|
||||
| TP@MB@Y |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: нет Всего: 4 |
anwe, ну это понятно. но мне надо все варианты матриц, в которых не более одной единицы на строке.
|
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: нет Всего: 149 |
Что-то я нифигачего не понимаю Что значит все возможные? Столбец либо содержит 1 либо нет откуда получился 1 столбец? И почему он дважды? P.S. Можно поподробнее? Как для тупого |
|||
|
||||
| TP@MB@Y |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: нет Всего: 4 |
ivashkanet, вобщем если перейти от абстракции, то я вычисляю все возможные аппликатуры аккорда(на интервале 5 ладов).
Т.е. есть шесть струн (строк) и пять столбцов(ладов). Аккорд состоит из нот. В этой матрице содержится элементы - ноль если нота не принадлежит аккорду и 1 если принадлежит. Вот мне и надо перебрать все возможные варианты ;) Думаю теепрь все встало на свои места. Какие предложения? |
|||
|
||||
| anwe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: нет Всего: 23 |
TP@MB@Y, ну ты прикинь. Это же 5^6=15625 вариантов.
Может лучше на гитаре. |
|||
|
||||
| TP@MB@Y |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: нет Всего: 4 |
anwe, я же пример привел в начале
вот дана матрица такая - 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 нужно на выходе получить такие матрицы - 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 вот я и хочу спросить оптимальный алгоритм как эти варианты перебрать. написал рекурсивную функцию. но оа где то не срабатывает. |
|||
|
||||
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 1 Всего: 61 |
TP@MB@Y,
рекурсия здесь не нужна. Она была бы нужна, если необходимо было бы выбрать такое расположение, чтобы в СТОЛБЦАХ не было повторений (как в задаче о 8 ферзях) здесь же очевидное решение. 6 циклов по каждой строке (струне) Но если очень уж хочется рекурсией, да и мало ли, ты для пианино программу захочешь разработать Идея: нашли первую ненулевую позицию в струне - идем дальше вниз и повторяем все то же самое
В векторе res содержатся номера столбцов(лады) для каждой струны. P.S. Тебе еще имхо нужно будет продумать ситуацию про открытые струны P.P.S. Есть отличнейшая программулина - Guitar Pro называется. Там это все есть + куча табулатур Кстати, примеры у тебя какие то странные, ты говоришь про матрицу 6 на 5, а примеры все 5х5 Это сообщение отредактировал(а) Kuvaldis - 1.11.2006, 22:30 -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
| TP@MB@Y |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: нет Всего: 4 |
Kuvaldis, БОЛЬШУЩЕЕ СПАСИБО!
Просто я забыл как правильно рекурсии писать) Вся прелесть рекурсий, в их минимализме Я воспользовался Вашей функцией, немного поправв ее под себя. Спасибо. Работает. Про гитар про я знаю конечно же. Но программу пишу спецально для себя, с узконаправлеными свойствами. Гитарпро слишком перегружена имхо. |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |