(剑指offer)面试题14 I. 剪绳子

tangshanxiaoq 15 0 PDF 2021-01-16 18:01:44

题目 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m] 。请问 k[0]k[1]...*k[m] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。 思路 动态规划法:定义解的代价dp[i]为长度为i的绳子对应的最大乘积 最优解的结构为:dp[i] = max(i-j,dp[i-j] ) * max(j,dp[j]) 数学法:根据数学定理,当所有绳段长度相等时,乘积最大。并且最优的绳段长度为 3 。 代码 /** * 动态规划法

用户评论
请输入评论内容
评分:
暂无评论