zoukankan      html  css  js  c++  java
  • LC 813. 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:
    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.
    We could have also partitioned A into [9, 1], [2], [3, 9], for example.
    That partition would lead to a score of 5 + 2 + 6 = 13, which is worse.
    

    Note:

    • 1 <= A.length <= 100.
    • 1 <= A[i] <= 10000.
    • 1 <= K <= A.length.
    • Answers within 10^-6 of the correct answer will be accepted as correct.
     

    Runtime: 4 ms, faster than 99.57% of C++ online submissions for Largest Sum of Averages.

    double memo[200][200];
    class Solution {
    public:
      double largestSumOfAverages(vector<int>& A, int K) {
        memset(memo, 0, sizeof(memo));
        int N = A.size();
        double cur = 0.0;
        for(int i=0; i<N; i++) {
          cur += A[i];
          memo[i+1][1] = cur / (i+1);
        }
        return search(N, K, A);
      }
      double search(int n, int k, vector<int>& A) {
        if(memo[n][k] > 0) return memo[n][k];
        if(n < k) return 0;
        double cur = 0.0;
        for (int i = n-1; i > 0; --i) {
          cur += A[i];
          memo[n][k] = max(memo[n][k], search(i, k-1, A) + cur / (n-i));
        }
        return memo[n][k];
      }
    };
  • 相关阅读:
    sqlserver判断是否为数字的函数
    vs2013 旗舰版 密钥
    HttpWebRequest类与HttpRequest类的区别
    C#中HttpWebRequest的用法详解
    SQL Server查询优化方法(查询速度慢的原因很多,常见如下几种)
    随机数Random
    PadLeft 补零
    delphi Firemonkey ListBoxItem自绘
    windows自带杀毒防火墙
    IIS 更新EXE文件
  • 原文地址:https://www.cnblogs.com/ethanhong/p/10313883.html
Copyright © 2011-2022 走看看