https://leetcode.com/problems/largest-sum-of-averages/description/
意外竟然可以n^2*k A掉。。。
class Solution {
public:
double largestSumOfAverages(vector<int>& A, int K) {
int n = A.size();
if (n == 0) return 0;
double sum[n+1];
for (int i = 0; i < n; i++) {
sum[i] = i == 0? A[i] : sum[i-1] + A[i];
}
if (K >= n) {
return sum[n-1];
}
vector< vector<double> >dp( A.size() + 1 , vector<double>(K+1, 0.0) );
for (int i = 0; i < n; i++ ) {
for (int t = 1; t <= K; t++) {
for (int j = 0; j <= i; j++) { // j是新一段的开始位置
if (t > i+1) continue;
if (t == 1 || j == 0 ) {
dp[i][t] = (sum[i] ) / (i +1);
continue;
}
dp[i][t] = max(dp[i][t], dp[j-1][t-1] + (sum[i] - sum[j-1]) / (i-j+1));
}
}
}
return dp[n-1][K];
}
};