目录
💎一、题目
🏆1.题目描述
🏆2.原题链接
💎二、解题报告
🏆1.思路分析
🔑思路:
手动计算前面几个,当绳子长度1,结果0,绳子长度2,结果1,绳子长度3,结果2,绳子长度4,结果3,形成数组第四个用前面的生成即可,同时记录最大数值
🏆2.代码详解
class Solution {
public:
int cuttingRope(int n) {
if(n == 2) return 1;
if(n == 3) return 2;
vector<int>arr(n+1);
arr[0] = 0;
arr[1] = 1;
arr[2] = 2;
arr[3] = 3;
for(int i = 4; i <= n; ++i)//1
{
int max = 0;
for(int j = 1; j < i;++j)
{
int tmp = arr[j]*arr[i-j];//2
if(tmp > max) max = tmp;
arr[i] = max;
}
}
return arr[n];
}
};
1.从第四个开始,长度是5,结果有(1,4)(2,3)
2.将所有结果相乘,保留最大的即可