剪绳子

剪绳子

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

题目描述

给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],...,k[m]。请问k[0]xk[1]x...xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。

输入描述:

输入一个数n,意义见题面。(2 <= n <= 60)


【贪心】 只要想到状态转移方程,这题就解了, dp[i] = max ( dp[i-j]*(j), dp[i-j]*dp[j], (i-j)*dp[j], (i-j)*j)  (j=1,2...i-1)

class Solution {
public:
    int cutRope(int number) {
        int dp[number];
        memset(dp,0,sizeof(dp));
        dp[1]=1;
        dp[2]=1;
        dp[3]=2;
        dp[4]=4;
        for(int i=5;i<=number;i++)
        {
            for(int j=1;j<i;j++)
            {
                int temp=max(max(dp[i-j]*j,dp[i-j]*dp[j]),max((i-j)*dp[j],(i-j)*j));
                dp[i]=max( dp[i], temp );
            }
        }
        return dp[number];
    }
};


全部评论

相关推荐

每晚夜里独自颤抖:这个在牛客不是老熟人了吗
点赞 评论 收藏
分享
后来123321:别着急,我学院本大二,投了1100份,两个面试,其中一个还是我去线下招聘会投的简历,有时候这东西也得看运气
无实习如何秋招上岸
点赞 评论 收藏
分享
兄弟们,实习都是在接各种api,该怎么包装简历
仁者伍敌:感觉我自己做小项目也是各种api啊,我要怎么包装简历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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