//Пусть имеется набор предметов, каждый из которых имеет два параметра — вес и
//ценность. И есть рюкзак, определенной вместимости. Задача заключается в том,
//    чтобы собрать рюкзак с максимальной ценностью предметов внутри, соблюдая
//при этом весовое ограничение рюкзака. (с) Википедия
//Реализуйте функцию backpack(v, goods) которая возвращает максимальную стоимость
//вещей из goods которые можно унести в рюкзаке объемом v.
//    Формат входных данных: v ­ целое положительное число, goods ­ массив объектов с
//ключами p ­ цена и v ­ объем вещи

function backpack(v, goods) {
    var result = [], tmp = 0;
    if (v <= 0) {
        return 0;
    }

    for (var i = 0; goods.length > i; i++){
        result[i] = goods[i].v;
        goods.splice(i, 1);
        for (var j = 0; goods.length > j; j++){
            if (v >= goods[j].v){
                result[i] += goods[j].v;
            }
        }
        var value = v - goods[i].v;
        tmp += backpack(value, goods);
    }

    return tmp;
}


console.log(
    backpack(120, [{p: 50, v: 100}, {p: 80, v: 110}, {p: 30, v: 10}, {p: 60, v: 30}, {p: 5, v: 40}])
);