【剑指offer】【贪心】14-I. 剪绳子
题目链接:https://leetcode-cn.com/problems/jian-sheng-zi-lcof/
贪心
class Solution {
public:
int cuttingRope(int n) {
if(n <= 3) return 1 * (n - 1);
int res = 1;
if(n % 3 == 1) res = 4, n -= 4;
else if(n % 3 == 2) res = 2, n -= 2;
while(n) res *= 3, n -= 3;
return res;
}
};
动态规划
dp[i]表示长度为i的绳子的最大乘积;
dp[i] = j * (i - j);
有四种情况:
都拆开 dp[i] = dp[j] * dp[i - j];
j可以拆开 dp[i] = dp[j] * (i - j);
i - j 可以拆开 dp[i] = j * dp[i - j];
都拆开 dp[i] =j * (i - j)
class Solution {
public:
int cuttingRope(int n) {
vector<int> dp(n + 1, 0);
dp[2] = 1;
for(int i = 2; i <= n; i++)
{
for(int j = 0; j < i; j++)
{
dp[i] = max(dp[i], max(dp[j], j) * max(dp[i - j], i - j));
}
}
return dp[n];
}
};
知识的价值不在于占有,而在于使用

浙公网安备 33010602011771号