Advertisement

解决剪绳子问题的方法也涉及对贪心和递归算法的理解其背后的核心思想

阅读量:

在剑指offer的算法题目中有一道经典的题目被称为剪绳子问题。在解决这个问题时通常采用两种主要策略:尽可能将绳子分割成长度为3的部分,并在选择时优先考虑这一点;另一种常见的解决方法则是使用动态规划技术。在当时的学习阶段,我对贪心算法与动态规划的区别尚不清晰,在完成这个题目后仍未能真正掌握其中的核心原理。因此又通过查阅相关资料才逐渐获得感性认识并加深了理解,在此过程中留下了学习笔记以供参考。

题目:

  • 解法一:贪心算法

简而言之,在将一段绳子分成若干段时(其中每一段都有一个确定的长度),我们希望这些段的长度乘积能够达到最大值

对于2和3: 是先分2好,还是先分3好? 3*(n-3) > 2*(n-2) 求解出来是 n>5,也就是说n>5的时候分3比分2好

对于数字4来说:拆分为3的话就是1×3=3,并不如不拆;而拆分为两个二则为2×2=4的效果更好;因此,在处理数字时遇到4的情况建议将其分成两个二

对于5:最好的方法是分段,因为3*2>5

对于6:当然也是分段要好

...

我们可以观察到从5开始之后的数值中进行分割会变得更加高效。让我们来思考一下,在绳子总长度设定为100单位的情况下:那么第一刀应该切多长? 我们发现:因此,在第一刀切割时如果长度超过4单位则不合适。这是因为将大于等于4的数值分割成2和3的部分会比原来的那段更为有利。进一

全部评论 (0)

还没有任何评论哟~