0、前言
本题选自leetcode
1、题目描述
2、解题思路
(1) 动态规划解法
- 在解决本题之前,我们有必要先了解一下动态规划的特性!
1.求一个问题最优解!2.整体问题的最优解是依赖各个子问题的最优解!3.我们把大问题分解为若干个小问题,这些小问题之间还有互相重叠的更小问题!4.从上往下分析问题,从下往上求解问题!
(2) 贪心解法
请参考:剪绳子II
3、代码实现
(1)动态规划
class Solution {
public:
int cuttingRope(int n) {
if (n <= 3) return n - 1;
int a[n + 5];
a[0] = 0;
a[1] = 1;
a[2] = 2;
a[3] = 3;
for (int i = 4; i <= n; i++) {
int maxed = 0;
for (int j = 1; j <= i / 2; j++) {
int res = a[j] * a[i - j];
if (maxed < res) {
a[i] = maxed = res;
}
}
}
return a[n];
}
};
(2)贪心
请参考:剪绳子II
4、小节
大佬们有什么好的想法可以留在评论区里面!我会好好学习的!