美文网首页
2022-12-22 leetcode 1799 难度大,抄写

2022-12-22 leetcode 1799 难度大,抄写

作者: 木马音响积木 | 来源:发表于2022-12-21 16:52 被阅读0次

    对于 1799 leetcode 难度是很大的,,我抄写,改写了 别人的

    class Solution:
        def maxScore(self, nums: List[int]) -> int:
            #最多14个数字,摆明了是让状态压缩
            n = len(nums)
            #---- 预计算一下gcd数组,虽然只有14个数字,但是数字都很大
            g = [[0]*n  for _ in range(n)]
            for i in range(n):
                for j in range(i + 1, n):
                    g[i][j] =  self.self_gcd(nums[i],nums[j])
                    #这里,只需要大的,上三角矩阵
            w=1 << n
            dp = [0]*w  #尽量不用range
            for s in range(3, w):
                cnt1 = bin(s).count('1')
                t,yu = divmod(cnt1, 2)
                if not yu:
                    for i in range(n-1):
                        for j in range(i+1, n):
                            x,y=1<<i,1<<j
                            if s&x and s&y:
                                if (m:= (dp[s-x-y] + t*g[i][j]))>dp[s]:dp[s]=m
            return dp[-1] #最后
    
        def self_gcd(self,a,b):
            while b:
                t=a%b
                a,b=b,t
            return a
    '''作者:code_learner
    链接:https://leetcode.cn/problems/maximize-score-after-n-operations/solution/cpython3-zhuang-ya-dp-by-hanxin_hanxin-azsb/'''
    
    
    

    相关文章

      网友评论

          本文标题:2022-12-22 leetcode 1799 难度大,抄写

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