有三根原木,长分别为len1,len2,len3,现在要把它们分成100根原木,每根长度相等,可以使用一根,两根,三根,问怎么分可以使100根原木每根为最长,并且求出最长值,getMaxresult(double len1,double len2,double len3)编程。

解决方案 »

  1.   

    len1,len2,len3 相加除以100
    得到理想值ideal  len1-ideal---len1,len2-ideal -- len2 ,len3-ideal -- len3
    着新的三个范围中是可以找到最优解的
      

  2.   

    看这样行不行.
    double sum=len1+len2+len3;
    double ave=sub/100;  //最优解如果按最优解分割得到的段数是:
    num1=(int)(len1/ave);
    num2=(int)(len2/ave);
    num3=(int)(len3/ave)
    实际的段数num=num1+num2+num3;
    实际段数比100可能少,就:
    ave1=len1/(num1+1); //如果给len1的木头多分出一段来,得到的ave1.
    ave2=len2/(num2+1); //如果给len2的木头多分出一段来,得到的ave2.
    ave3=len3/(num3+1); //如果给len3的木头多分出一段来,得到的ave3.
    求max(ave1,ave2,ave3)得到新的最优解。按新的最优解分割各段, 如果最不到100,重复做。
      

  3.   

    double ave=sum/100;  //最优解