Функция для подбора из множества чисел определённой суммы...

Программирование на Visual Basic for Applications
Rust
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 01.02.2005 (Вт) 14:41

Функция для подбора из множества чисел определённой суммы...

Сообщение Rust » 06.11.2007 (Вт) 16:12

Существует-ли в стандартных функциях Excel (статистических, математических и т.д.) функция, которая, комбинируя суммы из множества произвольных чисел, подбирает заранее известное число.

Genyaa
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 17.10.2006 (Вт) 13:46

Сообщение Genyaa » 07.11.2007 (Ср) 7:19

Среди стандартных функций такой функции нет.
Всякое решение плодит новые проблемы.

Rust
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 01.02.2005 (Вт) 14:41

Сообщение Rust » 07.11.2007 (Ср) 8:40

Спасибо! Там их столько и с такими названиями, язык сломаешь. Как минимум - нужен физ.-мат. Хотя, казалось бы, в первом аргументе диапазон чисел, во втором - искомое число. Перебрать все возможные комбинации. Это я так, к слову. На самом деле, пришлось самому написать рекурсивную функцию.

Genyaa
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 17.10.2006 (Вт) 13:46

Сообщение Genyaa » 07.11.2007 (Ср) 12:34

Хотя, казалось бы, в первом аргументе диапазон чисел, во втором - искомое число. Перебрать все возможные комбинации.

Да... только вот зачем? В чем практическая прикладная необходимость и полезность такой функции? Су-Доку решать или что?
Всякое решение плодит новые проблемы.

Krasnaja Shapka
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 87
Зарегистрирован: 26.10.2006 (Чт) 12:13
Откуда: Киев

Сообщение Krasnaja Shapka » 08.11.2007 (Чт) 15:23

гм... а можно подробнее про задачу?... я не понял про суммы произвольных чисел... и что "оно" должно подбирать..
Если ясность вашего объяснения исключает ложное толкование, все равно кто-то поймет вас неправильно.

Rust
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 01.02.2005 (Вт) 14:41

Сообщение Rust » 12.11.2007 (Пн) 13:30

Есть массив чисел:
456, 876, 982, 4657, 756, 73, 267, 456, 961, 368, 924, 57, 92

И есть число: 2165

Попробуйте собрать это число, суммируя числа из массива.

Подсказка: Число 2165 – это сумма чисел 1-го, 3-го, 7-го, 10-го, 13-го элементов массива.

Rust
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 01.02.2005 (Вт) 14:41

Сообщение Rust » 12.11.2007 (Пн) 13:33

Вернее это не подсказа, это ОТВЕТ.

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Сообщение HandKot » 13.11.2007 (Вт) 9:59

ответ может быть и таким сумма 3-го, 6-го, 9-го, 12-го, 13-го

точно не помню, но есть такой алгоритм:
брать наибольшее из требуемой (или остатка) требуемой суммы
Но массив желательно отсортировать по возрастанию

пример
найти сумму 2165
1) большее меньше суммы - 982
2) остаток от суммы = 1183
3) берем большее меньше остатка - 961
4) остаток = 222
5) берем большее меньше остатка - 92
6) остаток = 130
7) берем большее меньше остатка - 73
8) остаток = 57
9) берем большее меньше остатка - 57
Набрали сумму

Может не все так гладко пойти и поэтому придется использовать рекурсию

Удачи
I Have Nine Lives You Have One Only
THINK!

Rust
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 01.02.2005 (Вт) 14:41

Сообщение Rust » 13.11.2007 (Вт) 13:36

Спасибо, HandKot!
Функция-то давно написана.
Просто Krasnaja Shapka попросил(а) поподробней расписать условие задачи.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 13.11.2007 (Вт) 13:41

гм... и за что боролись то? В стандартных такой функции нет. А так алгоритм достаточно стандартный - можно на algolist поглядеть
Весь мир матрица, а мы в нем потоки байтов!


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList