-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path343.integer-break.java
43 lines (33 loc) · 974 Bytes
/
343.integer-break.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
class Solution {
int[] dp;
public int integerBreak(int n) {
dp = new int[n+1];
// solve2(n);
return solve2(n);
}
// public int solve(int n){
// if(n <= 1)
// return 1;
// int ans = 0;
// ArrayList<Integer> lst = new ArrayList<>();
// for(int i=1;i<=n/2;i++){
// lst.add(i);
// lst.add(n-i);
// ans = Math.max(ans, i*(n-i));
// }
// for(int num: lst){
// }
// return ans;
// }
public int solve2(int n){
if(n <= 1)
return 1;
if(dp[n] != 0)
return dp[n];
int ans = 0;
// ArrayList<Integer> lst = new ArrayList<>();
for(int i=1;i<=n/2;i++)
ans = Math.max(ans, Math.max(i, solve2(i))*Math.max(n-i, solve2(n-i)));
return dp[n] = ans;
}
}