【发布时间】:2014-02-20 22:00:12
【问题描述】:
我需要在固定天数内分发剩余的物品。例如假设我有 197 件物品和 75 天的时间来分发它们。如果我在 75 天内显示 2 个项目,那么我有 47 个项目未显示。如何在 75 天内平均分配剩余的 47 个项目,以便我得到一个像 2,3,3,2,3,3,2,2,3.... 的序列,即 3 均匀分布在整个显示器。这就是我目前所拥有的
const double num = (double)197/75;
double temp = num;
var list = new List<int>();
for (var t = 1; t <= days; t++)
{
var intPart = int.Parse(Math.Truncate(temp).ToString());
list.Add(intPart);
var remainder = num - intPart;
temp = num + remainder;
}
但我最终只显示了 187 个项目。我错过了 10 个。
【问题讨论】:
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
转换成秒怎么样?
-
感谢您的回复。当我说均匀时,我的意思是我只想在任何一个“桶”中最多放 3 件物品。所以基本上我希望剩余的 47 个项目尽可能均匀地分布在 75 个“桶”中,每个“桶”已经有 2 个项目。我认为通过跟踪剩余的项目可以实现我的目标,但我在想现在我可能需要在将整数插入列表时进行一些重新计算。还有什么想法吗?
标签: c# algorithm distribution