![]() |
eXeL@B —› Программирование —› Развернуть вложенные циклы |
Посл.ответ | Сообщение |
|
Создано: 21 марта 2009 15:43 · Личное сообщение · #1 Есть массив: Code:
Нужно сделать его обход с выводом всех возможных комбинаций, т.е. если N=3 можно сделать так: Code:
Как организовать программу, чтобы она не зависила от количества элементов массива и не использовала рекурсии? т.е. при любом значении N максимум 2-3 цикла ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh ![]() |
|
Создано: 21 марта 2009 15:48 · Поправил: tihiy_grom · Личное сообщение · #2 |
|
Создано: 21 марта 2009 15:49 · Поправил: hELLRC · Личное сообщение · #3 |
|
Создано: 21 марта 2009 16:00 · Личное сообщение · #4 Вы оба не правы... Блин было бы всё так просто я бы сюда не писал ![]() пример: Code:
Цикл выполняется 256 раз! Если так: Code:
Цикл выполняется 16 раз! ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh ![]() |
|
Создано: 21 марта 2009 16:23 · Личное сообщение · #5 |
|
Создано: 21 марта 2009 16:59 · Личное сообщение · #6 hELLRC пишет: без рекурсии что-то не идет в голову как сделать вот и мне не идёт а с ней надо следить за переполнением стека и будет нерационально жрать кучу памяти в теории сделать такой же массив 2 цикла repeat или while и в каждом проходе уменьшать значение счётчика во втором массиве, как до нуля дойдёт, уменьшать в предыдущем элементе, а в этом восстанавливать счётчик из оригинального когда счётчик в первом элементе =0 конец но что-то не получается осуществить ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh ![]() |
|
Создано: 21 марта 2009 17:03 · Личное сообщение · #7 |
|
Создано: 21 марта 2009 17:16 · Личное сообщение · #8 ARCHANGEL пишет: Это что, брутфорсер будущий? да ARCHANGEL пишет: Если да, то тогда не нужно так делать, и рекурсия не нужна, для этого есть другие алгоритмы Если просто перебор символов, то согласен, а если нет? а если не получается? Я упростил просто до безобразия В оригинале есть массив arr1: array[0..n] of array of byte; и на каждом шагу и массив arr1[n] xorится с SourceArr... Конечно не все циклы будут до конца, можно будет оптимизировать и прерывать при определённых условиях... Для этого нужно вычислить координаты массивов... Какие тогда "другие алгоритмы"? ![]() ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh ![]() |
|
Создано: 21 марта 2009 18:43 · Поправил: Wyfinger · Личное сообщение · #9 Isaev пишет: Цикл выполняется 256 раз! ... Цикл выполняется 16 раз! Потому что 4^4=256, а 4^2=16. Честно говоря не сразу понял что собственно Вам нужно. Вот мой вариант, вроде работает: Code:
Я бы назвал этот алгоритм "пляшуший P". Наверняка можно оптимизировать, если Вам это нужно для брутфорса. ![]() |
|
Создано: 21 марта 2009 19:37 · Личное сообщение · #10 Wyfinger пишет: Потому что 4^4=256, а 4^2=16 Я знаю ![]() Wyfinger пишет: Честно говоря не сразу понял что собственно Вам нужно. Возможно, криво объяснил... Очевидное для рассказчика не всегда очевидно слушателям (и мне обращение на "ты" ближе) Wyfinger пишет: Я бы назвал этот алгоритм "пляшуший P" ![]() Вот бывает такое иногда... знаешь что надо, сидишь и тупишь а иногда сядишь и напишешь за пару минут... хз. от погоды чтоли зависит ![]() Ещё мучаюсь давно с одним вопросом: algolist.manual.ru/search/lrs/suffix.php Кто-нибудь пробовал это осуществить? В нете куча теории и ни одного исходника Вот распечатал сижу изучаю ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh ![]() |
|
Создано: 22 марта 2009 01:47 · Личное сообщение · #11 Isaev пишет: Ещё мучаюсь давно с одним вопросом: --> Link <-- Кто-нибудь пробовал это осуществить? В нете куча теории и ни одного исходника Вот распечатал сижу изучаю Интересно =) , но почему то суфиксным деревьям предпочитают код Boyer-Moore string search ...хотя он вроде бы медленее ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube ![]() |
|
Создано: 22 марта 2009 02:18 · Поправил: Isaev · Личное сообщение · #12 |
|
Создано: 22 марта 2009 12:16 · Поправил: OKOB · Личное сообщение · #13 Isaev пишет: и ни одного исходника en.wikipedia.org/wiki/Suffix_tree" target="_blank">--> страница Wiki <-- и на ней ссылки на сырки Python, Perl, C. ----- 127.0.0.1, sweet 127.0.0.1 ![]() |
|
Создано: 22 марта 2009 12:47 · Личное сообщение · #14 |
|
Создано: 22 марта 2009 13:15 · Личное сообщение · #15 |
|
Создано: 22 марта 2009 20:26 · Личное сообщение · #16 |
|
Создано: 23 марта 2009 14:29 · Личное сообщение · #17 Isaev Табличный на основе xlat, т.е. у тебя есть массив символов, всяких разных, не только букв и цифр, можно и другие, хоть все печатаемые,хоть и непечатаемые тоже, далее по их коду располагаешь их в порядке возрастания, после перемещаешься по таблице, создаваяв результате следующей итерации новый вариант серийника (например ![]() ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 23 марта 2009 18:53 · Личное сообщение · #18 |
![]() |
eXeL@B —› Программирование —› Развернуть вложенные циклы |