📜  如果只能在给定的3种尺寸中进行切割,则最大化杆中的切割次数

📅  最后修改于: 2021-04-22 09:13:53             🧑  作者: Mango

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

天真的方法:

  • 让我们假设分别切割大小为A,B和C的杆的x,y和z数。这可以写成线性方程: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]更新为所有最小值。