文章目录 题目描述法一 动态规划法二 动态规划优化法三 数学 题目描述 法一 动态规划 int integerBreak(int n) { vector<int> dp(n+1); for(int i=2;i<=n;i++){ int curMax = 0; for(int j=1;j<i;j++){ curMax = max(curMax, max(j*(i-j), j*dp[i-j])); } dp[i] = curMax; } return dp[n]; } 法二 动态规划优化 int integerBreak(int n){ if(n<=3){ return n-1; } vector<int> dp(n+1); dp[2]=1; for(int i=3;i<=n;i++){ dp[i] = max(max(2*(i-2), 2*dp[i-2]), max(3*(i-3), 3*dp[i-3])); } return dp[n]; } 法三 数学 int integerBreak(int n){ if(n<=3){ return n-1; } int chu = n/3, mod = n%3; if(mod==0){ return (int)pow(3, chu); } else if(mod==1){ return (int)pow(3, chu-1)*4; } else { return (int)pow(3, chu)*2; } }