Хотелось бы узнать изначальную задачу данного алгоритма, а не разбираться в коде.
Навскидку вижу, что будет тормозить, зная задачу возможно сделать более простым путём.
Хотелось бы узнать изначальную задачу данного алгоритма, а не разбираться в коде.
Навскидку вижу, что будет тормозить, зная задачу возможно сделать более простым путём.
Это расчет в скрипте, тормоза не важны. алгоритм такой:
есть массив к примеру bool N[SIZE] . Каждый из его элементов инициализирован на false; Нужно перебрать все доступные сочетания. к примеру (0001\0010\0011\0100\0101\0110\0111 и так далее, только это вариант с 4 элементами) в коде в функцию передается значение size, которое задает обязательное количество одновременно активных значений. нужно перебрать все доступные варианты как в коде с примером вложенных циклов. точно знаю что это делается рекурсией, но как ее реализовать Бошка не варит )))
Все найденные варианты добавляются! Нужна именно такая реализация. Функция выполняет разовые промежуточные расчеты. в идеале прогнать переменную size с значения start до значения end.
Без рекурсии можно.
Делаем массив. Массива, это как бы бы число, а элементы это биты. Дальше прибавляем к числу 1.
Был массив 000, прибавляем 1, получаем 001, прибавляем 1, получается 2, значит обнуляем и увеличиваем на 1 старший разряд, получаем 010, прибавляем 1, получаем 011, и т.д.
Можно просто взять переменную инт, увеличивать ее на 1 и смотреть биты.
Если с правильного бока подойти, задача элэмэнтарная.
Без рекурсии можно.
Делаем массив. Массива, это как бы бы число, а элементы это биты. Дальше прибавляем к числу 1.
Был массив 000, прибавляем 1, получаем 001, прибавляем 1, получается 2, значит обнуляем и увеличиваем на 1 старший разряд, получаем 010, прибавляем 1, получаем 011, и т.д.
Можно просто взять переменную инт, увеличивать ее на 1 и смотреть биты.
Если с правильного бока подойти, задача элэмэнтарная.
да я понимаю что элементарная, но как в коде реализовать, голову клинит. размер массива может быть 25 элементов. переменной инт не хватит. помогите с решением именно в коде.
#define N 3 void OnStart(){ //--- int z[N]; ArrayInitialize(z,0); for(int i=0;i<MathPow(2,N);i++){ string str=""; for(int j=0;j<N;j++){ str=str+""+z[j]; } Alert(str); for(int j=0;j<N;j++){ z[j]++; if(z[j]==1){ break; } else{ z[j]=0; } } } }
Здесь на форуме нехватает кнопки "лайк" )))
А я как-то давно поднимал этот вопрос в голосовании. Лень искать, по памяти большинство проголосовало против. Доводы были, что тогда логично ввести и дизлайк, но тогда начнется война. Тут и так сра**и случаются с завидной регулярностью и на пустом месте.
Я лично тоже категорически против всяческих лайков. А вот кнопку с элементарной благодарностью за предоставленный код или полезный совет нужна.
Вот наглядный пример, Дмитрий помог человеку, он ему высказал благодарность отдельным постом. Вроде-бы всё нормально. Но если кто-то прочитав этот код вдруг понимает что такой подход и ему пригодится, тоже писать отдельный пост? А если какой-либо совет будет полезен сотне пользователей? Будем читать сто постов в поиске следующего? Чтобы не доводить до "войн" не обязательно учитывать эти благодарности в репутацию и совсем не надо никаких способов выражения недовольства, или ещё чего похуже... Ну и список поблагодаривших можно (даже наверное лучше) скрывать под спойлером, желающие откроют и посмотрят кто благодарил.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Нужно решение этого алгоритма в виде рекурсии либо любой другой удобной реализации, без необходимости прописывать по двадцать вложенных циклов. size передаваемая в функцию, может быть любого значения от 1 до 20 или 30. (задает количество элементов которые обязательно должны быть активны(true) в структуре sAAA. каждый уникальный вариант добавляется в массив структур, как видно в коде). Прошу прощения за такую пустяковую задачу, но моя голова никак не робит в этом плане. Программирование лишь мое хобби. Заранее спасибо тому кто поможет решить.
PS: Элементы массива в структуре sAAA по умолчанию инициализированы значениями false.