题解 | #剪绳子#

剪绳子

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

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param number int整型 
# @return int整型
# 动态规划思想,令dp[i]存放i能分解出的最大乘积
class Solution:
    def cutRope(self , number: int) -> int:
        # write code here
        dp = [0]*(number+1)
        if number <= 3:
            return number - 1 # 绳子长小于等于3,算是特殊情况,不得不切分
        else:
            dp[1] = 1
            dp[2] = 2
            dp[3] = 3 # 如绳子长于3,那么3以下是不能切的,越切越小
            for i in range(4, number+1):
                for j in range(2, int(i/2)+1):
                    dp[i] = max(dp[i], dp[j]*dp[i-j]) # 比比怎么切,谁大
            return dp[number]

全部评论

相关推荐

10-07 23:57
已编辑
电子科技大学 Java
八街九陌:博士?客户端?开发?啊?
点赞 评论 收藏
分享
小火柴燃烧吧:接啊,接了之后反手在咸鱼找个大学生搞一下,量大从优
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务