Skip to content

Commit 0da9bdb

Browse files
authored
Merge pull request chipbk10#98 from chipbk10/DP
Solve Problem 213 & 1388
2 parents 9cdf8ad + 3b89d3a commit 0da9bdb

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package dp.decision_making;
2+
3+
public class Problem1388_PizzaWith3NSlices {
4+
5+
public int maxSizeSlices(int[] A) {
6+
int n = A.length, x = 3, m = n/x;
7+
return Math.max(findMax(A, 0, n-2, m), findMax(A, 1, n-1, m));
8+
}
9+
10+
private int findMax(int[] A, int lo, int hi, int m) {
11+
int[][] dp = new int[hi-lo+1][m+1];
12+
for (int i = 0; i <= hi-lo; i++) {
13+
for (int k = 1; k <= m; k++) {
14+
int max2 = (i >= 2) ? dp[i-2][k-1] : 0;
15+
int max1 = (i >= 1) ? dp[i-1][k] : 0;
16+
dp[i][k] = Math.max(max1, max2 + A[i+lo]);
17+
}
18+
}
19+
return dp[hi-lo][m];
20+
}
21+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package dp.decision_making;
2+
3+
public class Problem213_HouseRobberII {
4+
5+
public int rob(int[] A) {
6+
int n = A.length;
7+
if (n == 1) return A[0];
8+
return Math.max(findMax(A, 0, n-2), findMax(A, 1, n-1));
9+
}
10+
11+
public int findMax(int[] A, int lo, int hi) {
12+
int max1 = 0, max2 = 0, max = 0;
13+
for (int i = lo; i <= hi; i++) {
14+
max = Math.max(max2 + A[i], max1);
15+
max2 = max1;
16+
max1 = max;
17+
}
18+
return max;
19+
}
20+
}

0 commit comments

Comments
 (0)