猿问

一个分摊算法的问题?

设置一个数组,输入n个大小不同数,然后把这些数分成m份,怎么才能让所有份之间的数目差之和最小?

例如[1,2,5,6,9,2,546,312,26,23],然后分成两份,怎么让这两份每份加起来,然后做差能最小?(每份的个数不用相等)

RoughColorText
浏览 1579回答 4
4回答

什么鬼_呀你

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,就它了,,,

杏仁酥饼

不知道是不是这个意思、、、
随时随地看视频慕课网APP
我要回答