我已经包括了我的方法和解决方案。我的解决方案工作得很好,但是,O(n^3)复杂度没有优化。
一个非政府组织正在运行种子分发程序。品种数量有限,品质多样。为了获得种子,农民需要要求种子的数量。种子分配只在周日进行,目标是最大限度地让农民获得相同类型的优质种子。
考虑到,非政府组织有以下种子和数量(按质量排序-最高):
|Quality|Fruit1|Fruit2|Fruit3|
|-------|------|------|------|
|Highest| 3| 3| 1|
|Medium | 2| 0| 0|
|Low | 4| 0| 0|产量:目标是将最高质量的种子分配给最大的农民。
在这里,农场主1号和3号组合要求获得3个种子,因此,组合中fruit1最高。
我有以下的域类-农民,QualityType,FruitType,种子
QualityType有FruitType列表,其中有种子列表。
为了取得结果,我正在做以下工作:
你能建议一些算法来简化它吗?
发布于 2015-07-09 15:01:34
最好的方法是首先划分问题空间,所以你只需要考虑多少农民想要多少特定水果类型和质量的种子。您可以在一次迭代中做到这一点。你需要知道每种水果和种子类型中有多少是被要求的。
然后,将每种品质的种子数除以所需的数量,舍入,并将剩余的种子分配给有限数量的农民。您可以通过将剩余部分确定为一个分数,并将多余的种子分配给该部分农民(例如7个种子,4个农民=1 1/3种子,这意味着农民获得的种子比他们要求的少1,如果农民计数器<= 7% 4,则额外获得1种子)(虽然如果分数小于1(4种子),请求的种子数小于7,则会出现故障,在这种情况下,每个农民最初获得0颗种子,其余的种子仍然分配给以前的情况)。
这就产生了两个迭代:1构建一组农民的需求,另一次满足它们。
https://softwareengineering.stackexchange.com/questions/289233
复制相似问题