Guest User

Untitled

a guest
Apr 19th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 KB | None | 0 0
  1. class Solution {
  2. public:
  3. double largestSumOfAverages(vector<int>& A, int K) {
  4. // const int n = A.size();
  5. // vector<vector<double>> dp(K+1, vector<double>(n+1, 0.0));
  6. // vector<double> sum(n+1, 0.0);
  7. // for(int i = 1; i <= n; i++) {
  8. // sum[i] = sum[i-1] + A[i-1];
  9. // dp[1][i] = static_cast<double>(sum[i]) / i;
  10. // }
  11.  
  12. // for(int k = 2; k <= K; k++) {
  13. // for(int i = k; i <= n; i++) {
  14. // for(int j = k-1 ; j < i; j++) {
  15. // dp[k][i] = max(dp[k][i], dp[k-1][j] + (sum[i] + sum[j])/(i - j));
  16. // }
  17. // }
  18. // }
  19. // return dp[K][n];
  20. const int n = A.size();
  21. vector<vector<double>> dp(K + 1, vector<double>(n + 1, 0.0));
  22. vector<double> sums(n + 1, 0.0);
  23. for (int i = 1; i <= n; ++i) {
  24. sums[i] = sums[i - 1] + A[i - 1];
  25. dp[1][i] = static_cast<double>(sums[i]) / i;
  26. }
  27.  
  28. for (int k = 2; k <= K; ++k)
  29. for (int i = k; i <= n; ++i)
  30. for (int j = k - 1; j < i; ++j)
  31. dp[k][i] = max(dp[k][i], dp[k - 1][j] + (sums[i] - sums[j]) / (i - j));
  32.  
  33. return dp[K][n];
  34. }
  35. };
Add Comment
Please, Sign In to add comment