zoukankan      html  css  js  c++  java
  • 动态规划_leetcode312

    #coding=utf-8

    # 递归
    class Solution1(object):
    def maxCoins(self, nums):
    """
    :type nums: List[int]
    :rtype: int
    """
    self.res = 0

    if not nums:
    return self.res

    self.res = self.getMaxValue(nums)

    print self.res
    return self.res

    def getMaxValue(self,nums):

    nLen = len(nums)

    if nLen == 1:
    return nums[0]

    maxRes = 0

    for i in range(nLen):

    if i == 0 :
    temp = nums[0:]
    temp.pop(i)
    maxRes = max(maxRes,nums[i]*nums[i+1]+self.getMaxValue(temp))


    elif i == nLen-1:
    temp = nums[0:]
    temp.pop(i)
    maxRes = max(maxRes, nums[i] * nums[i-1]+self.getMaxValue(temp))


    else:
    temp = nums[0:]
    temp.pop(i)
    maxRes = max(maxRes, nums[i-1]* nums[i]*nums[i+1]+ self.getMaxValue(temp))


    return maxRes


    # 记忆化递归

    class Solution2(object):
    def maxCoins(self, nums):
    """
    :type nums: List[int]
    :rtype: int
    """
    self.res = 0

    if not nums:
    return self.res

    self.memo = {}
    self.res = self.getMaxValue(nums)


    print self.res
    return self.res

    def getMaxValue(self,nums):

    nLen = len(nums)

    if nLen == 1:

    key = tuple(nums)
    self.memo[key] = nums[0]
    return nums[0]


    key = tuple(nums)

    if self.memo.has_key(key):
    return self.memo[key]

    maxRes = 0

    for i in range(nLen):

    if i == 0 :
    temp = nums[0:]
    temp.pop(i)
    maxRes = max(maxRes,nums[i]*nums[i+1]+self.getMaxValue(temp))


    elif i == nLen-1:
    temp = nums[0:]
    temp.pop(i)
    maxRes = max(maxRes, nums[i] * nums[i-1]+self.getMaxValue(temp))


    else:
    temp = nums[0:]
    temp.pop(i)
    maxRes = max(maxRes, nums[i-1]* nums[i]*nums[i+1]+ self.getMaxValue(temp))

    self.memo[key] = maxRes
    return maxRes


    #动态规划
    # 见解题报告
    class Solution3(object):
    def maxCoins(self, nums):
    """
    :type nums: List[int]
    :rtype: int
    """





    s = Solution2()

    n1 = [3,1,5,8]


    n2 = [5,8]

    n3 = [3,5,8]

    n4 = [7,9,8,0,7,1,3,5,5,2,3]

    n5 = [8,3,4,3,5,0,5,6,6,2,8,5,6,2,3,8,3,5,1,0,2]

    s.maxCoins(n4)
  • 相关阅读:
    HTML表单
    CSS等高布局的6种方式
    HTML用户反馈表单
    HTML美化修饰<A>
    sql查询语句 --------一个表中的字段对应另外一个表中的两个字段的查询语句
    jq 表格添加删除行
    js 静止f1到f12 和屏蔽鼠标右键
    手机自适应页面的meta标签
    tp3.2 的验证码的使用
    php多线程抓取网页
  • 原文地址:https://www.cnblogs.com/lux-ace/p/10546583.html
Copyright © 2011-2022 走看看