剪绳子

作者: 九日火 | 来源:发表于2020-06-10 11:21 被阅读0次
def cutRope(length):
    if length == 0:
        return 0
    if length == 1:
        return 1
    if length == 2:
        return 2
    if length == 3:
        return 3
    if length == 4:
        return 4
    result = [0,1,2,3]
    for i in range(4,length+1):
        max = 0
        for j in range(1,i//2+1):
            temp = result[j] * result[i-j]
            if temp > max:
                max = temp
        result.append(max)
    return result[length]
print(cutRope(8))
# 动态规划

# 贪心算法
def cutRope(length):
    if length <= 4:
        return length
    timeOfThree = length // 3
    if length - timeOfThree * 3 == 1:  
    # 如果减去3,还剩下4,这时候就不能在减去3了,2*2 > 3 * 1
        timeOfThree -= 1
    timeOfTwo = (length - timeOfThree * 3) // 2
    return pow(3,timeOfThree) * pow(2,timeOfTwo)
func cutRope(n int) int {
   if n<2 || n > 60 {
      return 0
   }
   if n == 2 {
      return 1
   }
   if n == 3 {
      return 2
   }
   if n == 4 {
      return 4
   }
   return 3*cutRopeHandler(n-3)
}

func cutRopeHandler(n int) int {
   if n == 2 {
      return 2
   }
   if n == 3 {
      return 3
   }
   if n == 4 {
      return 4
   }
   return 3*cutRopeHandler(n-3)
}

相关文章

  • 剪绳子

    题目描述 给定一根长度为n的绳子,请把绳子剪成m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0]...

  • 剪绳子

    《剑指offer》面试题14:剪绳子 题目:给你一根长度为n的绳子,请把绳子剪成m段 (m和n都是整数,n>1并且...

  • 剪绳子

    题目描述:给你一根长度为n的绳子,请把绳子剪成m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0]...

  • 剪绳子

    给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1,m<=n),每段绳子的长度记为...

  • 剪绳子

    题目描述 给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为...

  • 剪绳子

  • 剪绳子

    题目描述 给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为...

  • 剪绳子

    题目给你一根长度为n绳子,请把绳子剪成m段(m、n都是整数,n>1并且m>1)。每段的绳子的长度记为k[0]、k[...

  • 剪绳子

    题目描述 给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为...

  • 剪绳子

    给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为...

网友评论

      本文标题:剪绳子

      本文链接:https://www.haomeiwen.com/subject/qtvutktx.html