国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Leetcode 486 python 解題報告

2019-11-08 02:55:23
字體:
來源:轉載
供稿:網友

AC代碼:

class Solution(object):    def PRedictTheWinner(self, nums):        """        :type nums: List[int]        :rtype: bool        """        total = sum(nums)        sum1 = [[0 for i in range(len(nums))]for i in range(len(nums))]        dp = [[0 for i in range(len(nums)+1)] for i in range(len(nums)+1)]        for i in range(len(nums)):            dp[i][i] = nums[i]        for i in range(len(nums)):            for j in range(i,len(nums)):                sum1[i][j] = sum(nums[:j+1]) - sum(nums[:i])        print sum1        for k in range(1,len(nums)):            for i in range(len(nums)-k):                j = i + k                dp[i][j] = max(nums[i]+sum1[i+1][j] - dp[i+1][j],nums[j]+sum1[i][j-1]-dp[i][j-1])            #print dp        tmp = dp[0][len(nums)-1]        if tmp*2 >= total:            return True        else:            return False思路:定義兩個二維數組,sum1和dp,sum1[i][j]表示的是i-j的總和,dp[i][j]則表示i-j中,先選擇的人能獲得的最大加和,

因為兩人需要輪流選擇,每人每次都會選擇最有利于自己的結果,因此下次選擇時,需從前面的總和減去前一組選擇可獲得的最大值,然后再比較先選左邊還是先選右邊能獲得更大的結果,

于是可以得到動態轉換方程:

dp[i][j] = max(nums[i]+sum1[i+1][j] - dp[i+1][j],nums[j]+sum1[i][j-1]-dp[i][j-1])


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 中西区| 沙湾县| 丰镇市| 汪清县| 思南县| 马龙县| 娄烦县| 呼伦贝尔市| 张家界市| 石棉县| 常宁市| 连城县| 西丰县| 格尔木市| 红桥区| 三亚市| 义马市| 喀喇沁旗| 崇礼县| 远安县| 武邑县| 疏附县| 彭泽县| 韩城市| 文安县| 即墨市| 新龙县| 威宁| 上饶县| 宜君县| 渭源县| 英吉沙县| 乌拉特中旗| 宁国市| 郑州市| 同江市| 高雄市| 江津市| 辽阳县| 延川县| 永安市|