1
class Solution {
2
public int maxSizeSlices(int[] slices) {
3
int n = slices.length;
4
return Math.max(helper(slices, n / 3, 0, n - 2), helper(slices, n / 3, 1, n - 1));
5
}
6

7
private int helper(int[] slices, int rounds, int start, int end) {
8
int n = end - start + 1, max = 0;
9
int[][][] dp = new int[n][rounds + 1][2];
10
dp[0][1][1] = slices[start];
11
for (int i = start + 1; i <= end; i++) {
12
int x = i - start;
13
for (int j = 1; j <= rounds; j++) {
14
dp[x][j][0] = Math.max(dp[x - 1][j][0], dp[x - 1][j][1]);
15
dp[x][j][1] = dp[x - 1][j - 1][0] + slices[i];
16
if (j == rounds) {
17
max = Math.max(max, Math.max(dp[x][j][0], dp[x][j][1]));
18
}
19
}
20
}
21
return max;
22
}
23
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0