剑指offer 13. 剪绳子

简介: 剑指offer 13. 剪绳子

题目描述


给你一根长度为 n nn 绳子,请把绳子剪成 m mm 段(m mm、n nn 都是整数,2 ≤ n ≤ 58 2≤n≤582≤n≤58 并且 m ≥ 2 m≥2m≥2)。


每段的绳子的长度记为 k [ 1 ] 、 k [ 2 ] 、 … … 、 k [ m ] k[1]、k[2]、……、k[m]k[1]、k[2]、……、k[m]。


k [ 1 ] , k [ 2 ] , … , k [ m ] k[1],k[2],…,k[m]k[1],k[2],…,k[m] 可能的最大乘积是多少?


例如当绳子的长度是 8 88 时,我们把它剪成长度分别为 2 22、3 33、3 33 的三段,此时得到最大的乘积 18 1818。

样例

输入:8
输出:18


方法一:数学 O(n)


1.png

class Solution {
public:
    int maxProductAfterCutting(int length) {
        if (length <= 3)   return length - 1;
        int res = 1;
        //将lenght变成3的倍数
        if (length % 3 == 2) res = 2, length -= 2;
        if (length % 3 == 1) res = 4, length -= 4;  //两个2相乘
        while (length)   res *= 3, length -= 3;
        return res;
    }
};




欢迎大家在评论区交流~

目录
相关文章
|
6月前
leetcode-913:猫和老鼠
leetcode-913:猫和老鼠
85 1
|
算法 测试技术 C++
C++算法:美丽塔O(n)解法单调栈
C++算法:美丽塔O(n)解法单调栈
|
1月前
lanqiao OJ 1505 剪邮票
lanqiao OJ 1505 剪邮票
27 0
|
1月前
lanqiao oj 17136 星球(状态压缩dp)
lanqiao oj 17136 星球(状态压缩dp)
9 0
|
6月前
leetcode-419:甲板上的战舰
leetcode-419:甲板上的战舰
38 0
|
6月前
剑指 Offer 14- I:剪绳子
剑指 Offer 14- I:剪绳子
40 0
|
6月前
剑指 Offer 14- II:剪绳子 II
剑指 Offer 14- II:剪绳子 II
32 0
|
C++
【LeetCode343】剪绳子(动态规划)
(1)确定状态 dp[i]是将正整数i拆成2个及其以上的正整数后,求所有数的乘积值。
140 0
【LeetCode343】剪绳子(动态规划)
过河卒-蓝桥杯-动态规划
过河卒-蓝桥杯-动态规划
128 0
|
存储
剑指Offer - 面试题14:剪绳子
剑指Offer - 面试题14:剪绳子
83 0