1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| class Solution { public: int len = 0; vector<int> sum; double largestSumOfAverages(vector<int>& nums, int k) { len = nums.size(); sum = vector<int>(len+1, 0); for(int i = 1; i <= len; i++) { sum[i] = nums[i-1] + sum[i-1]; } return search(nums, k, 1, 1, 0, 0); } double search(vector<int>& nums, int k, int i, int K, double left_value, int last_j) { if(k == K || i == len) { return left_value + (sum[len] - sum[last_j] + 0.0) / (len - last_j); } return max(search(nums, k, i+1, K+1, left_value + (sum[i] - sum[last_j] + 0.0)/(i-last_j), i), search(nums, k,i+1, K, left_value, last_j)); }
double max(double a, double b) { return a > b ? a : b; } };
|