《剑指Offer》14. 剪绳子

题目链接

牛客网

Leetcode

题目描述

把一根绳子剪成多段,并且使得每段的长度乘积最大。

n = 2
return 1 (2 = 1 + 1)

n = 10
return 36 (10 = 3 + 3 + 4)

解题思路

Leetcode做过,使用dp,dp[i]表示i长度的绳子剪后乘积最大值(注意一定是剪了,否则n=2时应为2),剪多长和剩下的怎么处理(不剪或者剪)

public class Solution {
   
    public int cutRope(int target) {
   
        int[] dp = new int[target+1];
        dp[1] = 1;
        for (int i=2;i<=target;i++) 
            for (int j=1;j<i;j++)
                dp[i] = Math.max(dp[i], Math.max(j*(i-j), j*dp[i-j]));
        return dp[target];
    }
}
全部评论

相关推荐

10-22 12:03
山东大学 Java
程序员小白条:26届一般都得有实习,项目可以随便写的,如果不是开源社区的项目,随便包装,技术栈也是一样,所以本质应该找学历厂,多投投央国企和银行,技术要求稍微低一点的,或者国企控股那种,纯互联网一般都得要干活
应届生简历当中,HR最关...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务