背景是,我需要将绘制的长度分割成有效的子部分,而绘制时我还需要捕捉到下一个可能的长度。
例如,我知道有效的零件长度为[400,700,100 - 1500,十分之一]
会产生3条规则:
示例1
我绘制了1500的长度,我可以用两种方式分割它:
示例2
我绘制了1150的长度,我无法将其拆分为有效的子部分
=>没有可能的解决方案...最接近可能的长度:1100或1200,假设我们更喜欢较小的那个
1100只能以一种方式分割
所以我总是想找到
创建此长度。
如何解决这个问题?最后,我想找出组合子部件以获得总长度的可能方法。
目标:
我最终的目标是找到下一个最佳长度以及与最少(最长)子部分的组合,可以合并到这个长度......
答案 0 :(得分:0)
天真的解决方案:递归。您可以应用规则1,也可以不应用规则1。因此,对于输入1700,要么应用规则1(剩余:1300),要么不应用(剩余:1700,不能再使用规则1)
答案 1 :(得分:0)
据我所知,这个问题与变革问题密切相关。您的“有效部分”是硬币,您的长度是要给出的总变化。有几种方法可以解决这些问题,其中包括动态编程和贪婪方法(根据问题的特殊性,一种可能比另一种更好。) 变革问题基本上是“如何使用尽可能少的硬币获得所需的金额,给定可能的硬币”。它在许多在线文档中都有描述。