剑指 Offer 14- I. 剪绳子-动态规划

在这里插入图片描述
链接:https://leetcode-cn.com/problems/jian-sheng-zi-lcof/solution/zhu-shi-xing-ti-jie-dong-tai-gui-hua-jia-4xfp/

解题思路:
一根绳子剪成两段后,实际上还是根绳子,那么就是一个问题可以拆分成相同子问题来解决,所以考虑用动态规划,这里要注意dp应该存储的内容

  • 注意:
    1.dp的定义
    2.循环条件有个隐藏值就是j只需要循环到i的一半就行
class Solution {
public:
// 本题采用动态规划去求解是一种类似于暴力的方式
    int cuttingRope(int n) {
        if(n<=3)return n-1;
        vector<int>dp(n+1,0);
        // 这里dp里面存储中,索引表示当前这一小段的长度,值代表长度值,换句话说就是dp[2]=2代表长度为2的绳子的长度为2
        dp[0] = 0;
        dp[1] = 1;
        dp[2] = 2;
        dp[3] = 3;
        for(int i =4;i<=n;++i){
            // 这里循环到i/2原因是3,1和1,3分段的时候是一样的for(int j =1;j<i;++j)也可以
            for(int j =1;j<=i/2;++j){
                dp[i] = max(dp[i],dp[j]*dp[i-j]);
            }
        }
        return dp[n];
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值