【发布时间】:2020-07-13 18:45:52
【问题描述】:
我在处理分发问题时遇到了问题。
我有工人和工作案例。每个工作案例都有一个值。我需要分配工作案例,以便所有工作人员获得相同数量的总价值相似的案例(如果可能)。
总病例数和工人数是随机的。
解决这个问题的最佳方法是什么?我完全被卡住了。
我的第一个想法是按价值排序,然后像这样分发:
public class WorkCase
{
public decimal Value { get; set; }
}
public class Worker
{
public List<WorkCase> Cases { get; set; }
}
public static void Sort(List<WorkCase> cases, List<Worker> workers)
{
cases = cases.OrderByDescending(c => c.Value).ToList();
var wCount = workers.Count;
int i = 0;
while (cases.Any())
{
workers[i].Cases.Add(cases.First());
if (i == workers.Count - 1)
i = 0;
else
i++;
}
}
但这对最后一个工人并不公平。 感谢您的帮助。
【问题讨论】:
-
看看这是否对你有帮助:cs.stackexchange.com/questions/29709/…
-
如果工人完成工作,是否应该删除该值?或者这只是一个日程安排练习?
标签: c# algorithm mathematical-optimization