这道题考察的是动态规划。
解题细节参考剑指offer.
P.S. 对于n=1,n=2,n=3,produce和最终结果不同因为最终结果必须剪一刀,而produce可以为n自己。
时间和内存消耗以及源代码如下:

int cuttingRope(int n){
int m;
int produce[n];
//对于n=1,n=2,n=3,produce和最终结果不同因为最终结果必须剪一刀,而produce可以为n自己
if (n < 1)
{
m = 0;
}
if (n >= 1)
{
produce[0] = 1;
m = 0;
}
if (n >= 2)
{
produce[1] = 2;
m = 1;
}
if (n >= 3)
{
produce[2] = 3;
m = 2;
}
if (n >= 4)
{
int max;
for (int i=3; i<n; i++)
{
produce[i] = 0;
for (int j=0; j<=i/2; j++)
{
max = produce[j] * produce[i-j-1];
if (max>produce[i])
{
produce[i] = max;
}
}
}
m = produce[n-1];
}
return m;
}
本文探讨了使用动态规划解决绳子切割问题的方法,详细介绍了如何通过递推公式求解最优解,以及如何初始化和更新状态数组。适用于对动态规划和算法优化感兴趣的读者。

418

被折叠的 条评论
为什么被折叠?



