这道题考察的是动态规划。
解题细节参考剑指offer.web
P.S. 对于n=1,n=2,n=3,produce和最终结果不一样由于最终结果必须剪一刀,而produce能够为n本身。svg
时间和内存消耗以及源代码以下:
spa
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; }