youngyangyang04 / leetcode-master-comment

用来做评论区
0 stars 0 forks source link

[Vssue]0343.整数拆分.md #179

Open youngyangyang04 opened 3 weeks ago

youngyangyang04 commented 3 weeks ago

https://www.programmercarl.com/0343.%E6%95%B4%E6%95%B0%E6%8B%86%E5%88%86.html

Du1in9 commented 1 week ago
int[] dp = new int[n + 1];
dp[2] = 1;
for (int i = 3; i <= n; i++) {
    for (int j = 1; j <= i / 2; j++) {
        dp[i] = Math.max(dp[i], Math.max((i - j) * j, dp[i - j] * j));
    }
}
return dp[n];
// 例: n = 5, dp = [0,0,1,0,0,0]
i = 3:  j = 1: dp[3] = max(0, 2 * 1, 1 * 1) = 2, dp = [0,0,1,2,0,0]
i = 4:  j = 1: dp[4] = max(0, 3 * 1, 2 * 1) = 3
        j = 2: dp[4] = max(3, 2 * 2, 1 * 2) = 4, dp = [0,0,1,2,4,0]
i = 5:  j = 1: dp[5] = max(0, 4 * 1, 4 * 1) = 4
        j = 2: dp[5] = max(4, 3 * 2, 2 * 2) = 6, dp = [0,0,1,2,4,6]