zoukankan      html  css  js  c++  java
  • 【leetcode】813. Largest Sum of Averages

    题目如下:

    解题思路:求最值的题目优先考虑是否可以用动态规划。记dp[i][j]表示在数组A的第j个元素后面加上第i+1 (i从0开始计数)个分隔符后可以得到的最大平均值,那么可以得到递归关系式: dp[i][j] = max(dp[i][j],dp[i-1][k]+float(sum(A[k+1:j+1]))/float(j-k)) 。

    代码如下:

    class Solution(object):
        def largestSumOfAverages(self, A, K):
            """
            :type A: List[int]
            :type K: int
            :rtype: float
            """
            tl = [0] * len(A)
            dp = []
            for i in range(K):
                dp.append(tl[:])
    
            count = 0
            for i in range(len(dp)):
                for j in range(len(dp[i])-K+i+1):
                    count += A[j]
                    if i == 0:
                        dp[i][j] = float(count)/float(j+1)
                        continue
                    for k in range(j):
                        #print k,j,sum(A[k:j])
                        dp[i][j] = max(dp[i][j],dp[i-1][k]+float(sum(A[k+1:j+1]))/float(j-k))
    
            return dp[-1][-1]
    
            
  • 相关阅读:
    docker入门
    初级排序算法1-定义排序规则
    Lambda入门
    mac编辑器vim美化
    SSM搭建
    Memcached安装教程及使用
    lombok
    立个Flag-第一天
    等高线自适应分割
    wpf软件模拟鼠标键盘操作
  • 原文地址:https://www.cnblogs.com/seyjs/p/9489776.html
Copyright © 2011-2022 走看看