对于一段绳子,第一刀下去可以将绳子分成i和n-i两段,其中i的取值范围为[1,n-1]
dp[n]表示n可分成的最大乘积和,dp[n] = max(dp[n],max(i*n-i,i*f(n-i)))
初始化:全部初始化为1
int integerBreak(int n) {
vector<int> dp(n + 1, 1);
for (int i = 2; i <= n; i++)
for (int j = 1; j <= i - 1; j++)
dp[i] = max(dp[i],max(j * dp[i - j], j*(i-j)));
// for (int i : dp) cout << i << " ";
return dp[n];
}
标签:14,Offer,int,max,绳子,力扣,343,dp
From: https://www.cnblogs.com/yaocy/p/16821991.html