设置一个数组,输入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
提交
取消