[求助]求助
<p>如何解决最优化分组问题</p> 没人过问! 求助帖都没人看! 现有N个小于50的数字。把他们分成若干组,每组中最多有M个数字,且每组中的数字之和不大于50。先求组数最少的分法? <br/>--------------------------------------------------------------- <br/><br/>用贪心策略,从小到大逐个类加,和超过50就分出一组,得到的也许不是最优解,但肯定是较优解。 <br/>--------------------------------------------------------------- <br/><br/>这儿有一个更优的方法: <br/> void fun() <br/> { <br/> 排序:按从大到小排成一列L; <br/> <br/> while(L非空) <br/> { <br/> 将L中从头开始取数并放到一个数组A中,直到总数加上下一个数的和 <br/> 大于或等于50停止;然后又从L最后往前取数到该数组A中,直到总数 <br/> 加上下一个数的和大于或等于50停止。 <br/> } <br/> } <br/> <br/><br/>--------------------------------------------------------------- <br/><br/>要实现比较优秀的算法须考虑实际状态与目标状态之间的差别最小,即让每组数的和接近50且小于50, <br/>各组数的和均匀. <br/>--------------------------------------------------------------- <br/><br/>补充:还需使每组数字最多,接近M个
页:
[1]