【发布时间】:2014-01-13 11:53:30
【问题描述】:
我有一个类项目列表:
public class Item
{
public int Id { get; set; }
public string Name { get; set; }
public int ItemSize { get; set; }
public int? ContainerId { get; set; }
}
也是一个类Container
public class Container
{
public int Id { get; set; }
public int ContainerSize { get; set; }
}
容器具有属性大小的最大值。 我需要将 List 的每个对象分配给一个容器,注意以下规则:
具有相同名称的列表项对象必须放在同一个容器上。当然TotalSize > Max Container Size 不可能有多个同名的Item。
我必须创建尽可能少的容器
非常感谢任何建议。
【问题讨论】:
-
所以如果你有更多的同名项目超过了最大容器大小,那么你应该把溢出的项目放入一个新的容器中,还是不关心溢出?
-
你标记对了:使用背包算法
-
@AttilaBujáki 我不能有“溢出”。输入数据会阻止它。
-
尽可能少的容器数?简单 - 创建一个容器大小为
MyListItemList.Count的容器并将所有内容放入其中。你的两个条件都满足了。我猜虽然这不是完整的问题,实际上你得到了一组具有固定大小的容器,以...... -
@Mashton 一个容器有一个 ContainerSize 属性的最大值
标签: c# algorithm list grouping knapsack-problem