1
+ // Runtime: 20 ms (Top 78.88%) | Memory: 8 MB (Top 44.62%)
1
2
class Solution {
2
3
public:
3
- double solve (vector<int >&nums, int index, int k, vector<vector<double >>&dp){
4
- if (index <0 )
5
- return 0 ;
6
- if (k<=0 )
7
- return -1e8 ;
4
+ double solve (vector<int >&nums, int index, int k, vector<vector<double >>&dp){
5
+ if (index <0 )
6
+ return 0 ;
7
+ if (k<=0 )
8
+ return -1e8 ;
8
9
9
- if (dp[index ][k]!=-1 )
10
- return dp[index ][k];
10
+ if (dp[index ][k]!=-1 )
11
+ return dp[index ][k];
11
12
12
- double s_sum = 0 ;
13
- double maxi = INT_MIN;
14
- int cnt = 1 ;
15
- for (int i=index ;i>=0 ;i--){
16
- s_sum += nums[i];
17
- maxi = max (maxi, (s_sum/cnt) + solve (nums, i-1 , k-1 , dp));
18
- cnt++;
19
- }
20
- return dp[index ][k] = maxi;
21
- }
13
+ double s_sum = 0 ;
14
+ double maxi = INT_MIN;
15
+ int cnt = 1 ;
16
+ for (int i=index ;i>=0 ;i--){
17
+ s_sum += nums[i];
18
+ maxi = max (maxi, (s_sum/cnt) + solve (nums, i-1 , k-1 , dp));
19
+ cnt++;
20
+ }
21
+ return dp[index ][k] = maxi;
22
+ }
22
23
23
- double largestSumOfAverages (vector<int >& nums, int k) {
24
- int n = nums.size ();
25
- vector<vector<double >>dp (n, vector<double >(k+1 , -1 ));
26
- return solve (nums, n-1 , k, dp);
27
- }
24
+ double largestSumOfAverages (vector<int >& nums, int k) {
25
+ int n = nums.size ();
26
+ vector<vector<double >>dp (n, vector<double >(k+1 , -1 ));
27
+ return solve (nums, n-1 , k, dp);
28
+ }
28
29
};
0 commit comments