Необходима реализация частного случая "задачи ранца" на php

Журавлев15 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
22.01.2017

Задача такова - есть набор чисел, пример - 100, 150, 70, 40 и т.д., есть некая финальная сумма 300.

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

к искомому самым быстрым алгоритмом.

В данном примере, результатом будут числа 100, 150 и 40 = 290.