Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
14.05.2017, 21:29
|
|||
---|---|---|---|
|
|||
подбор слагаемых Excel |
|||
#18+
Добрый день, помогите, пожалуйста, решить задачу. 1. имеется массив данных - таблица размером 4х50 (столбцы х строки) с одним числом в каждой ячейке 2. задача - при вводе произвольного числа (суммы) подобрать слагаемые из таблицы, найти и выписать все возможные комбинации для данной суммы 3. ограничения - кол-во слагаемых равно всегда 4 - каждое слагаемое берется из своего столбца (из любой строки) спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.05.2017, 22:55
|
|||
---|---|---|---|
|
|||
подбор слагаемых Excel |
|||
#18+
Простой перебор 50^4 вариантов (код не оптимизирован) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.05.2017, 23:02
|
|||
---|---|---|---|
подбор слагаемых Excel |
|||
#18+
Михаил Ч.Простой перебор 50^4 вариантовДостаточно перебрать 50^3 (125 тыс.) вариантов - вместе с итоговой суммой они определяют значение 4-го слагаемого, и достаточно просто проверить его наличие. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.05.2017, 23:13
|
|||
---|---|---|---|
|
|||
подбор слагаемых Excel |
|||
#18+
Akinaи достаточно просто проверить его наличие. поиском в массиве? что почти не будет отличатся от перебора, т.к. массивы не отсортированы. Кроме того числа в столбцах повторяются, а нужно генерацию всех вариантов сочетаний слагаемых ... |
|||
:
Нравится:
Не нравится:
|
|||
|
15.05.2017, 07:53
|
|||
---|---|---|---|
подбор слагаемых Excel |
|||
#18+
Михаил Ч.поиском в массиве?Вот ещё! Range.Find Михаил Ч.массивы не отсортированыКто мешает? сортируем один раз, а итераций аки грязи... Михаил Ч.числа в столбцах повторяются, а нужно генерацию всех вариантов сочетаний слагаемыхА на что это влияет? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
15.05.2017, 08:29
|
|||
---|---|---|---|
|
|||
подбор слагаемых Excel |
|||
#18+
AkinaВот ещё! Range.Find По своей сути это такой же перебор массива (возможно работает быстрее, чем перебор реализованный на VBA) По указанным исходным данным перебор 50^4, без оптимизации вывода результатов на лист занимает менее 1 секунды. Также реализовал перебор 50^3 вариантов (см. вложение), но пришлось жертвовать памятью Оптимизировать алгоритмы перебора можно по разному (использовать динамическое программирование, применить метод ветвей и границ отсекая не перспективные ветви решения, предварительная сортировка данных, поиск данных в сортированном массиве половинным делением и т.д.) Также можно не использовать нули в расчетах, что сильно сократит количество перебираемых вариантов. От трудности задачи зависит необходимость ее оптимизации, возможно, что написание и отладка оптимизированного кода займет времени существенно больше, чем неоптимизированный перебор (как в данном случае). ... |
|||
:
Нравится:
Не нравится:
|
|||
|
15.05.2017, 08:34
|
|||
---|---|---|---|
подбор слагаемых Excel |
|||
#18+
Михаил Ч.Также можно не использовать нули в расчетахНу чтобы не использовать нули, нужно проверить, что сумма трёх максимальных значений в остальных столбцах меньше заданной суммы. И если это так - то почему бы их и не откинуть (да и не только их, но и все малые значения). Это ведь тоже одноразовая операция, а ускорит просчёт солидно. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
15.05.2017, 08:57
|
|||
---|---|---|---|
|
|||
подбор слагаемых Excel |
|||
#18+
AkinaИ если это так - то почему бы их и не откинуть (да и не только их, но и все малые значения). Это ведь тоже одноразовая операция, а ускорит просчёт солидно. Это один из частных случаев метода ветвей и границ - отсечение неперспективных ветвей решения. После оптимизации вывода массива на лист: перебор 50^4 - 0,5 сек, 50^3 - 0,03 сек. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=61&tablet=1&tid=2172697]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
80ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
others: | 10ms |
total: | 177ms |
0 / 0 |