Skip to content

Commit 85abdaa

Browse files
committed
modify code
1 parent 07b1377 commit 85abdaa

File tree

2 files changed

+7
-16
lines changed

2 files changed

+7
-16
lines changed

src/class46/Code01_BurstBalloons.java

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -56,23 +56,15 @@ public static int maxCoins2(int[] arr) {
5656
}
5757
for (int L = N; L >= 1; L--) {
5858
for (int R = L + 1; R <= N; R++) {
59-
int finalL = help[L - 1] * help[L] * help[R + 1] + dp[L + 1][R];
60-
int finalR = help[L - 1] * help[R] * help[R + 1] + dp[L][R - 1];
61-
int max = Math.max(finalL, finalR);
62-
for (int leftEnd = L + 1; leftEnd < R; leftEnd++) {
63-
max = Math.max(max,
64-
help[L - 1] * help[leftEnd] * help[R + 1] + dp[L][leftEnd - 1] + dp[leftEnd + 1][R]);
59+
int ans = help[L - 1] * help[L] * help[R + 1] + dp[L + 1][R];
60+
ans = Math.max(ans, help[L - 1] * help[R] * help[R + 1] + dp[L][R - 1]);
61+
for (int i = L + 1; i < R; i++) {
62+
ans = Math.max(ans, help[L - 1] * help[i] * help[R + 1] + dp[L][i - 1] + dp[i + 1][R]);
6563
}
66-
dp[L][R] = max;
64+
dp[L][R] = ans;
6765
}
6866
}
6967
return dp[1][N];
7068
}
7169

72-
public static void main(String[] args) {
73-
int[] arr = { 4, 2, 3, 5, 1, 6 };
74-
System.out.println(maxCoins1(arr));
75-
System.out.println(maxCoins2(arr));
76-
}
77-
7870
}

src/class46/Code02_RemoveBoxes.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,18 +36,17 @@ public static int removeBoxes2(int[] boxes) {
3636

3737
public static int process2(int[] boxes, int L, int R, int K, int[][][] dp) {
3838
if (L > R) {
39-
return K * K;
39+
return 0;
4040
}
4141
if (dp[L][R][K] > 0) {
4242
return dp[L][R][K];
4343
}
44-
int ans = 0;
4544
int last = L;
4645
while (last + 1 <= R && boxes[last + 1] == boxes[L]) {
4746
last++;
4847
}
4948
int pre = K + last - L;
50-
ans = (pre + 1) * (pre + 1) + process2(boxes, last + 1, R, 0, dp);
49+
int ans = (pre + 1) * (pre + 1) + process2(boxes, last + 1, R, 0, dp);
5150
for (int i = last + 2; i <= R; i++) {
5251
if (boxes[i] == boxes[L] && boxes[i - 1] != boxes[L]) {
5352
ans = Math.max(ans, process2(boxes, last + 1, i - 1, 0, dp) + process2(boxes, i, R, pre + 1, dp));

0 commit comments

Comments
 (0)