Largest Sum of Averages
We partition a row of numbers A into at most K adjacent (non-empty) groups, then our score is the sum of the average of each group. What is the largest score we can achieve?
Note that our partition must use every number in A, and that scores are not necessarily integers.
Example
Example:
Input:
A = [9,1,2,3,9]
K = 3
Output: 20
Explanation:
The best choice is to partition A into [9], [1, 2, 3], [9]. The answer is 9 + (1 + 2 + 3) / 3 + 9 = 20.
Solution
class Solution:
def largestSumOfAverages(self, A: List[int], K: int) -> float:
N = len(A)
dp = [[0]*K for _ in range(N)]
for i in range(N):
for j in range(K):
if j==0:
dp[i][j]= sum(A[:i+1])/(i+1)
else:
if i<j:
break
for r in range(i):
dp[i][j] = max(dp[i][j], dp[r][j-1]+sum(A[r+1:i+1])/len(A[r+1:i+1]))
return dp[-1][-1]
探讨了如何将一组数字A划分为最多K个相邻的非空子组,以使每个子组的平均数之和达到最大。通过动态规划算法,实现了一个解决方案,详细说明了算法的实现过程。

478

被折叠的 条评论
为什么被折叠?



