设置一个数组,输入n个大小不同数,然后把这些数分成m份,怎么才能让所有份之间的数目差之和最小?例如[1,2,5,6,9,2,546,312,26,23],然后分成两份,怎么让这两份每份加起来,然后做差能最小?(每份的个数不用相等)
4 回答
什么鬼_呀你
TA贡献46条经验 获得超35个赞
var arr=[1,9,10,13,20],
arr2=[],
b=true,compare=0,
str=[],
x=0;//次数
arr.sort(function(a,b){ //先排序
return a-b; });
arr2.push(arr.pop());//先推入最大的一个,
console.log(arr);
console.log(arr2);
while(b&&arr.length>=1){
let num1=arr.reduce(function(){
return arguments[0]+arguments[1];
}),
num2=arr2.reduce(function(){
return arguments[0]+arguments[1];
})
let num=num1-num2;
console.log("第"+(x++)+"次num1--"+num1,"num2--"+num2);
compare=num;
if(num1<num2){
console.log("s组合1--"+str[0]+'组合2--'+str[1]);
b=false;
}else{
str=[];//清空
arr2.push(arr.shift());
str.push(arr,arr2);
}
}emm,就它了,,,
添加回答
举报
0/150
提交
取消

