chlh066 发表于 2006-5-28 00:11

[求助]求助

<p>如何解决最优化分组问题</p>

liujie8109 发表于 2007-10-10 11:21

没人过问! 求助帖都没人看!

madio 发表于 2007-10-10 11:57

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