algorithm - 有人可以帮我做算法作业吗?

标签 algorithm

<分区>

我对我们老师作为作业提出的算法有一点疑问。它是这样的:

有很多这样的棍子:

4(要用的桩数)

11 7 5 4(棍子的长度)

1 1 3 3(每个长度有多少根棍子)

我必须找出一种算法,通过合并它们来形成最少数量的木棍。前面例子的解决方案是这样的:

15 3 (15(最佳总和) * 3(最小支数) = 45 = 11*1 + 7*1 + 5*3 + 4*3)

11 4

7 4 4

5 5 5

现在我不是要你们解决这个问题,而是要给我一条路线,我试图将其减少为“进行更改”问题,直到我必须选择的部分之前它一直很好从剩下的解决方案中选出好的解决方案。

所需的复杂度是指数级的,限制是:

  1. 0 < 支 < 100
  2. 0 < max_sum_of_sticks < 1000

那么你们对此有什么想法吗?

非常感谢您的宝贵时间。

关于最小木棍数量的解释:例如,如果我有一组木棍。要形成的总和是 80,我有相当多的解决方案:

1根长80的棍子

2根长40的木棍

4 根长 20 等。

第一个是微不足道的,我们放弃了它,对于其余的解决方案,我必须测试我是否可以用我拥有的棍子组构建它们,因为有可能选择的解决方案,例如 2*40,是这是一个可靠的,因为我们有未使用过的木棍。

最佳答案

这看起来很像 Knapsack问题。

您也可以看看 Branch and bound , 是解决各种优化问题的通用算法。

关于algorithm - 有人可以帮我做算法作业吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/648459/

相关文章:

java - 对堆排序的直观理解?

algorithm - 使用 cgo 时;性能开销在哪里/什么时候?

c# - 随机排列坐标值的3D插值

algorithm - 创建一组人,使得没有两个人在同一个团队中。

c++ - 从 vector 中删除空元素

c++ - 生成均匀间隔的点网格

javascript - 使用对象在数组内部循环以获取其中一个属性

知道其集合/数组的 ruby​​ 对象

c++ - 减少通用树遍历中的分支

algorithm - 构建具有单一状态的日期序列的优雅算法是什么?