CodingInterviewChinese2 icon indicating copy to clipboard operation
CodingInterviewChinese2 copied to clipboard

剪绳子贪婪算法最优证明没看懂,求解惑!

Open naget opened this issue 6 years ago • 2 comments

书中写到:

当n>=5的时候,我们可以证明2(n-2)>n并且3(n-3)>n。也就是说,当绳子剩下的长度大于或者等于5的时候,我们就把它剪成长度为3或长度为2的绳子段

这个“也就是说”结论是怎么得出的?这个结论不是应该证明了3(n-3)>2(n-2)>.....>i(n-i)才能得出吗?

naget avatar Dec 09 '18 13:12 naget

假设绳子可以正好分为k段,那么最后乘积是k^(n/k),其中^表示次方,通过求导数的方式可以证明当k=3时,k^(n/k)取得最大值,所以应当尽可能剪出长度3的段。

所以当n%3==0时,直接全部剪成3 当n%3==1时,剪出2个2,剩下全部剪成3 当n%3==2时,剪出1个2,剩下全部剪成3 为什么这么剪,需要仔细想一想就可以明白。

说实话,我感觉这本书不太好,有些地方没讲清。

YuaCC avatar Jan 12 '19 02:01 YuaCC

自己推一下数据公式就能明白了,在假设绳子长度大于等于5的时候,推导之后的数字是恒成立的

Jennifer1996 avatar Aug 28 '19 08:08 Jennifer1996