我正在尝试创建一种将数组均匀分布到 X 个新数组中的方法,其中仅允许 15 个项目 pr 数组,并且您只允许创建一个新数组,如果前一个有 10 个项目,除非该数组的项目少于 10 个。
编辑
为了让未来的读者更容易理解我的问题。
- 这就像一块织物。
- 您需要构建 X 个产品。
- 一个产品需要 T 金额为员工构建。
您需要多少员工,您如何分担他们之间的工作量?
结束编辑
Max allowed number in array = 15;
Min allowed number in array = 10;
Number = Numbers of Items in the Collection.
Number 5 => [5]
Number 13 => [13]
Number 16 => [10] [6]
Number 29 => [15] [14]
Number 30 => [15] [15]
Number 31 => [11] [10] [10]
Number 32 => [12] [10] [10]
Number 33 => [11] [11] [11]
我试图在 C# 中解决这个问题。
到目前为止,这是我的代码,但它在 16 = [16]、29 = [19][10]、38 = [18][10][10] 等数字处失败
const int maxAllowedOrderLines = 15;
const int minAllowedOrderLines = 10;
var optimalOrderDisp = new List<int>();
Console.WriteLine("Number of OrderLines");
int linjer = Convert.ToInt32(Console.ReadLine());
if (linjer <= maxAllowedOrderLines)
optimalOrderDisp.Add(linjer);
else
{
for (var i = maxAllowedOrderLines; i > 0; i--)
{
var maxOrderLines = linjer%i;
if (maxOrderLines == 0 || i <= minAllowedOrderLines || linjer < maxAllowedOrderLines)
{
Console.WriteLine("Optimal number of order lines {0}--{1}", i, (double) linjer/(double) i);
var optimalNumberOfOrders = linjer/i;
for (var orderNumber = 0; orderNumber < optimalNumberOfOrders; orderNumber++)
{
optimalOrderDisp.Add(i);
}
if (maxOrderLines != 0)
optimalOrderDisp[0] += maxOrderLines;
break;
}
}
}
foreach (var i1 in optimalOrderDisp)
{
Console.Write("[{0}]", i1);
}
Console.WriteLine();