题解 | #剪绳子#

剪绳子

http://www.nowcoder.com/practice/57d85990ba5b440ab888fc72b0751bf8

第七十八题
方法一 递归
class Solution {
public:
    int cutRope(int number) {
        // 直接递归。
        // 5 = 1+4=2+3 所以,5的结果 应该是1和4最大的结果相乘 或者2和3最z的结果相乘
        
        // 再比如20 =1+19 = 2+18.... 所以结果就是1和19的最大值相乘,或者2和18的最大值相乘,或者3和17最大值相乘。。。
        if(number == 2)
            return 1;
        if(number==3)
            return 2;
        vector<int>dp(number+1);
        dp[1]=1;
        dp[2]=2;
        dp[3]=3;
        for(int i=4;i<=number;i++)
        {
            int temp=0;
            for(int j=1;j<=i/2;j++)
            {
                temp=max(temp,dp[j]*dp[i-j]);
            }
            dp[i]=temp;
        }
        for(int i=0;i<=number;i++)
            cout<<dp[i]<<" ";
        return dp[number];
    }
};
题解 文章被收录于专栏

一遍做剑指offer 一边保存做题步骤 并附带详细注释哦

全部评论

相关推荐

03-19 09:58
河海大学 Java
最喜欢春天的奇亚籽很...:同学,是小红书不是小哄书,一眼就能看到的错误
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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