343 整数拆分

  1. class Solution {
  2. public int integerBreak(int n) {
  3. if (n < 2)
  4. return 0;
  5. if (n == 2)
  6. return 1;
  7. if (n == 3)
  8. return 2;
  9. // 当整数的值大于3时
  10. int[] dp = new int[n + 1];
  11. dp[0] = 0; dp[1] = 1; dp[2] = 2; dp[3] = 3;
  12. int max = 0;
  13. for (int i = 4; i <= n; ++i) {
  14. max = 0;
  15. for (int j = 1; j <= i / 2; ++j) {
  16. int temp = dp[j] * dp[i -j];
  17. if (temp > max)
  18. max = temp;
  19. dp[i] = max;
  20. }
  21. }
  22. return dp[n];
  23. }
  24. }