Javascript实现从数组中选择并等于固定值的n个数字的个数。

Javascript实现从数组中选择并等于固定值的n个数字的个数。
现实生活中的问题可以抽象为这样的数据模型:

从数组中选择一些数字,以便添加数字和指定值。

大多数读者应该有网上购物的经验。网上购物通常只有一个功能。如果读者购买70元的产品,他们必须支付100元邮寄。然后系统会自动推荐一些产品,这将增加近100元。

系统如何确定哪些项目被推荐这就是刚才提到的模型。我们可以把热销产品的价格放在一个数组中,然后用算法找出数组的价格是30元。

废话少了,小碟子共享了这个算法的Javascript版本。

算法代码:
功能getcombbysum(数组和,宽容,targetcount){
VaR工具= { {
*
从数组获取组合
Arr:目标阵列
Num:组合项目长度
返回:一个包含组合数组的数组。
* /
getcombination:功能(ARR,努姆){
var = { };
函数f(t,a,n)
{
如果(n=0)
{
返回r.push(T);
}
对于(var i = 0,L = a.length;我<= L-N;i++)
{
F(t.concat(一个{我}),a.slice(I + 1),n-1);
}
({ })},ARR,NUM);
返回R;
},
将数组索引带到数组中
getarrayindex:函数(数组){
var I=0,
r = {;
为(i = 0;i < array.length;i++){
R.push(我);
}

返回R;
}
},逻辑= {
对数组进行排序,然后得到我们需要的内容。
函数(数组,和){
克隆阵列
无功_array = array.concat(),
r = {,
我= 0;
按升序排序
_array.sort(功能(A,B){
返回一个B;
});
获取所有小于或等于和的数字
为(i = 0;i < _array.length;i++){
如果(_array {我} < =总和){
R.push(_array {我});
其他{ }
打破;
}
}

返回R;
},
/重要功能
核心:函数(数组和,arrayindex,计数,R){
var I=0,
k=0,
combarray = { },
_sum = 0,
_cca = { },
_cache = { };

如果(数= = _returnmark){
返回;
}
获取当前计数组合
combarray = util.getcombination(arrayindex,计数);
为(i = 0;i < combarray.length;i++){
_cca = combarray {我};
_sum = 0;
_cache = { };
计算组合的和
为(k = 0;K<_cca.length;K+){
_sum = { } } { k _cca阵列;
_cache.push(数组{ { } } _cca K);
}
如果(Math.abs(_sum-sum)< = _tolerance){
R.push(_cache);
}
}

logic.core(数组和,arrayindex,count-1,R);
}

},
r = {,
_array = { },
_targetcount = 0,
_tolerance = 0,
_returnmark = 0;

检查数据
_targetcount = targetcount _targetcount | |;
_tolerance =宽容_tolerance | |;

_array = logic.init(数组的总和);
如果(_targetcount){
_returnmark = _targetcount-1;
}

logic.core(_array,总和,util.getarrayindex(_array),(_targetcount | | _array。长度),R);

返回R;
}
呼叫描述:
一个数组的数组:数据sources.required。

The sum of sum: is added.Required.

宽容:宽容。如果没有指定该参数,该金额必须等于参数,这个参数可以指定允许结果浮在公差range.optional。

对targetcount数:操作数。如果没有指定该参数,结果包含了所有可能的情况下,指定这个参数可以过滤掉固定数量的可加性。如果指定了3,结果只有三numbers.optional。

返回值:返回一个数组数组结构,内数组中的元素是一个操作数,外部数组中的元素是所有可能的结果。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部