题目描述
给你一根长度为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。
示例1:
1 | 输入: 2 |
示例2:
1 | 输入: 10 |
提示:2 <= n <= 58
思路
- 当所有绳段长度相等时,乘积最大
- 根据数学计算得出最优的绳段长度是
3 - 剪绳规则:尽可能剪成多个
3,最后一段的长度可能是0、1、2- 为
0时,说明能剪成多个3 - 为
1时,需要拿出一个3来加上1变成4,因为4>3 - 为
2时,直接乘在后面即可
- 为
代码
1 | class Solution{ |
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/jian-sheng-zi-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。