Страницы: 1
RSS
как выйти на заданную сумму из перечня сумм
 
Подскажите, пожалуста, как выйти на заданную сумму из перечня сумм (файл в приложении)?
Спасибо огромное.
Изменено: Olena_ - 11.06.2013 11:42:29 (прикрепление файла)
 
(файл в приложении)?
 
пытать первую попавшуюся, пока не сознается
Живи и дай жить..
 
Извините.
 
вот я когда-то давно писал...

не перебирает все варианты и, соответственно, не 100% находит лучший, но на вашем случае сработало

в первом столбце(А) набор чисел, требуемую сумму напротив сумма, точность там задана в 1 коп
Живи и дай жить..
 
автора я, к сожалению не помню, но такие вопросы уже задавались здесь.
Учимся сами и помогаем другим...
 
Слэн, ber$erk, Можно конечно и без макросов, через поиск решения, но считает достаточно долго, я бы даже сказал, что очень долго но как вариант.
 
у меня считает мгновенно, но не ищет наилучший вариант
Живи и дай жить..
 
Вот мои наблюдения на этот счет.
Во-первых, было бы неплохо отсортировать список чисел средствами икселя.
Во-вторых, можно заметить, что искомую сумму можно получить только и только при сложении двух чисел.
В-третьих, одно из слогаемых должно быть только и только следующей формы: #,67 (# - целая часть числа), а другое число должно быть целым. Однако, если 0,33+0,33 в сумме дают 0,67 (как при сложении дробей 1/3+1/3) то данный пункт не работает.
В-четвертых, часть чисел можно удалить, так как они сами по себе больше искомой суммы (всего остается 30 чисел для проверки).
Наконец, получается всего 29+28+27+26+...+1 возможных вариантов решения. Сумма данной последовательности = 435, то есть всего 435 возможных ответов.
Если написанное справедливо, то код для вба существенно упрощается.
Если задачу нужно решить только один раз, то можно вообще обойтись без макроса и поиска решений.

ПС. Можно еще кое-какие наблюдения найти, но для составления кода верхнего хватит.
Изменено: Все_просто - 11.06.2013 13:07:58
С уважением,
Федор/Все_просто
Страницы: 1
Читают тему
Наверх