首页 > 其他分享 >剪绳子

剪绳子

时间:2023-05-06 22:35:19浏览次数:53  
标签:乘积 int 绳子 length 长度 dp

题目描述

https://www.acwing.com/problem/content/24/

解题思路

令 \(dp[i]\) 定义为:绳子长度为 \(i\) 时的最大乘积

当绳长为 \(i\) 时,假设第一段长度为 \(j\),则有剩下长度为 \(i - j\),此时可分为两种情况:

  1. 继续剪:则有最大乘积为 \(j * dp[i - j]\)
  2. 不剪:则有最大乘积为 \(j * (i - j)\)

则有状态转移方程为:\(dp[i] = max(dp[i], j * (i - j), j * dp[i - j])\)

题解代码

class Solution {
public:
    int maxProductAfterCutting(int length) {
        int dp[length + 1] = {0};
        for (int i = 2; i <= length; i ++ ) {
            for (int j = 1; j < i; j ++ ) {
                dp[i] = max({dp[i],j * (i - j), j * dp[i-j]});
            }
        }
        return dp[length];
    }
};

标签:乘积,int,绳子,length,长度,dp
From: https://www.cnblogs.com/NachoNeko/p/17378602.html

相关文章

  • 【剑指 Offer】 14- II. 剪绳子 II
    【题目】给你一根长度为n的绳子,请把绳子剪成整数长度的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1]...k[m-1]。请问k[0]*k[1]*...*k[m-1]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。答案需要......
  • 中级软件设计师软考备考资源;解决org.apache.ibatis.binding.BindingException: Invali
    中级软件设计师软考备考资源软考资源在百度网盘上org.apache.ibatis.binding.BindingException:Invalidboundstatement(notfound)问题即在mybatis中dao接口与mapper配置文件在做映射绑定的时候出现问题,简单说,就是接口与xml要么是找不到,要么是找到了却匹配不到。这是一个很容易......
  • 【剑指 Offer 】14- I. 剪绳子
    【题目】给你一根长度为n的绳子,请把绳子剪成整数长度的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1]...k[m-1]。请问k[0]*k[1]*...*k[m-1]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。示例1:输入:......
  • (动态规划)剑指 Offer 14- II. 剪绳子 II
    题目描述:给你一根长度为n的绳子,请把绳子剪成整数长度的m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1]...k[m-1]。请问k[0]*k[1]*...*k[m-1]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。答案......
  • 动态规划:剑指 Offer 14- I. 剪绳子
    题目描述:给你一根长度为n的绳子,请把绳子剪成整数长度的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1]...k[m-1]。请问k[0]*k[1]*...*k[m-1]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。  提......
  • 剑指 Offer 14- I. 剪绳子
    题目链接:剑指Offer14-I.剪绳子方法:数论解题思路将\(n\)分为\(m\)个数的和,使得这\(m\)个数的乘积最大,那么应该将\(m\)个数分为\(2\)和\(3\)的组合,尽可能为\(3\)。代码classSolution{public:intcuttingRope(intn){if(n==2)return......
  • 剑指 Offer 14- II. 剪绳子 II
    题目链接:剑指Offer14-II.剪绳子II方法:数论解题思路将\(n\)分为\(m\)个数的和,使得这\(m\)个数的乘积最大,那么应该将\(m\)个数分为\(2\)和\(3\)的组合,尽可能为\(3\)。注意大数越界问题。代码classSolution{public:intcuttingRope(intn){......
  • 剪绳子
    数学方法classSolution{public:intmaxProductAfterCutting(intn){//特判一下n≤3的情况if(n<=3)return1*(n-1);intres=1;......
  • 【230312PH-1】如图,物体重700N,动滑轮重100N,站在地上的人拉住绳子的一端,使物体处于静止
    ......
  • 剪绳子
    给你一根长度为n的绳子,请把绳子剪成整数长度的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1]...k[m-1]。请问k[0]*k[1]*...*k[m-1]可能的最大乘积是多少?......