Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 找到成本更低的最佳组合_Javascript_Php_Laravel - Fatal编程技术网

Javascript 找到成本更低的最佳组合

Javascript 找到成本更低的最佳组合,javascript,php,laravel,Javascript,Php,Laravel,我有这样一个数组: fee=[1 => 10,2=>18,4=>32,8=>60] 我希望得到如下结果: 7 -> 4+2+1 => 32+18+10 7=>60 9 -> 8+1 => 60+10 9=>70 这里7、9是输入值 它如何解决这个问题 这一个有点棘手,但它可以工作并且可以扩展: var arr = [10, 18, 32, 60]; var search = 7; var result = 0; for (va

我有这样一个数组:

fee=[1 => 10,2=>18,4=>32,8=>60]
我希望得到如下结果:

7 -> 4+2+1 => 32+18+10
7=>60

9  -> 8+1 => 60+10
9=>70
这里7、9是输入值


它如何解决这个问题

这一个有点棘手,但它可以工作并且可以扩展:

var arr = [10, 18, 32, 60];
var search = 7;
var result = 0;

for (var i = 0; i < (search >>> 0).toString(2).length; i++) {
    if ((search >>> 0).toString(2)[i] == "1") {
        result += arr[i];
    }
}
// result = 60
var-arr=[10,18,32,60];
var搜索=7;
var结果=0;
for(var i=0;i<(search>>0).toString(2.length;i++){
if((搜索>>>0).toString(2)[i]=“1”){
结果+=arr[i];
}
}
//结果=60

说明:
(search>>0).toString(2)
将seached值(7)转换为二进制掩码<代码>7=>111和
9=>1001
。然后它循环遍历这个二进制字符串的每个字符,检查它是0还是1,并将数组中的等价项添加到结果中。

您可以遍历费用组,并获得可能的整数值。保存该值并继续,直到选中所有组

迭代的数组必须先按最低成本排序,然后按较高成本排序,然后按较大的包排序

功能获取最低成本(价值、费用){
var结果={cost:0};
result.rest=Object.keys(fee).sort(函数a,b){
退货费[a]/a-费用[b]/b | | b-a;
}).减少(功能(r,a){
结果[a]=数学地板(r/a);
结果成本+=结果[a]*费用[a];
返回r%a;
},价值);
返回结果;
}
log(getLowestCost(7,1:10,2:18,4:32,8:60});
log(getLowestCost(9,{1:10,2:18,4:32,8:60});
log(getLowestCost(7,{1:10,2:20,4:32,8:60});
log(getLowestCost(9,{1:10,2:20,4:32,8:60})

。作为控制台包装{max height:100%!important;top:0;}
显示**付款**1,2,4,8是小时,10,18,32,60是货币($),我不是专家,但这看起来像域。这真的不是一个简单的任务。对我来说,它似乎是纯二进制操作,索引是2fee的幂,数组不是ObjectReal吗?我看到一个对象。@Mahi,
fee
是一个PHP关联数组,它相当于一个javascript对象。@NinaScholz,非常棒的算法,虽然它可能会失败,代价像
{1:10,2:20,4:32,8:60}
@sevavietl,但它现在应该可以优先使用更大的包。