📌  相关文章
📜  如果一根杆只能切割成给定的 3 种尺寸,则最大限度地增加切割次数

📅  最后修改于: 2021-09-17 06:53:57             🧑  作者: Mango

给定一根长度为N米的杆,该杆只能切成 3 种尺寸ABC 。任务是最大化杆的切割次数。如果无法进行 cut 则打印-1
例子:

天真的方法:

  • 让我们假设分别切割了 x、y 和 z 个尺寸为 A、B 和 C 的杆。这可以写成一个线性方程:x*A + y*B + z*C = N
  • 现在,简单地迭代 x 和 y 的所有可能值并使用 (N – x*A + y*B) / c 计算 z。
  • 如果 x*A + y*B + z*C = N,那么它就是可能的答案之一。
  • 最后计算 x + y + z 的最大值。

时间复杂度: O(N 2 )
辅助空间: O(1)
有效的方法:该问题可以使用动态规划解决。

  1. 创建一个大小为N的 dp[]数组并将所有值初始化为INT_MIN
  2. 设置 dp[0] = 0,因为这将是我们方法的基本情况。
  3. 1N迭代并检查是否可以切割任何可能的长度,即 A、B 和 C,并将dp[i]更新为所有的最小值。

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程。