14. 剪绳子

剪绳子

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

  • 利用动态规划,需要O(n^2)时间和O(n)空间,也就是利用一个表,储存长度为1~n绳子的最大乘积。
class Solution:
 def cutRope(self, number):
     # write code here
     if number < 2: return 0
     if number == 2:return 1
     if number == 3:return 2
     products = [0, 1, 2, 3]
     for i in range(4, number+1, 1):
         product = 0
         for j in range(1,4//2+1,1):
             res = products[j]* products[i-j]
             product = max(res,product)
             products.append(product)
     return  products[-1]
  • 贪婪算法:这种想法比较巧妙,尽量把大于5的数分解成3的乘积,如果剩下的长度为4,则把4分解成2和2,因为3图片说明 1 < 2 图片说明 2。
class Solution:
 def cutRope(self, number):
     # write code here
     if number < 2: return 0
     if number == 2:return 1
     if number == 3:return 2
     timesof3 = number // 3
     if number - timesof3 * 3 == 1:
         timesof3 -= 1
     timesof2 = (number - timesof3 * 3) / 2
     return (3**timesof3)*(2**timesof2)
全部评论

相关推荐

点赞 评论 收藏
分享
05-16 11:16
已编辑
东华理工大学 Java
牛客737698141号:盲猜几十人小公司,庙小妖风大,咋不叫她去4️⃣呢😁
点赞 评论 收藏
分享
感觉今年拿到大厂实习offer的人很多,光是身边同学室友都是好几个offer。由此可见,秋招得有多卷
小浪_Coding:必须卷的起飞, 应该比25更卷一点, 25已经是哀声一片了, 26会更难一点, 现在还有`很多25未找到的
点赞 评论 收藏
分享
评论
15
收藏
分享

创作者周榜

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