题解 | #剪绳子#

剪绳子

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]

全部评论

相关推荐

03-31 17:40
已编辑
门头沟学院 算法工程师
程序员牛肉:小牛肉来也! 也不要焦虑啦,你第一志愿还没有结束,只是回到人才库(泡大池子等待各个部门挑选)而已。仅仅代表你不符合这个组的用人标准,并不能够说明你在本次暑期实习中没机会加入美团了。 还是平复好心态,不断的复盘,等待下一次面试就好了。
点赞 评论 收藏
分享
03-26 22:55
门头沟学院 Java
烤冷面在迎接:河南byd,应该就是郑大了。不过24届计算机是特殊情况,那年除了九✌和强2,以及两三个关系够硬的双非,其他的都是炮灰,感觉是十几年来互联网行业最烂的一年,如果想了解最新的就业情况,得找现在的大四。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务