class Solution { public: int cutRope(int number) { int res = 0; // 此处循环中的i是段的长度,等于1时指全是长度为1的段,不能等于number for (int i = 1; i != number; ++i){ int a = number / i; int b = number % i; int temp = 0; if (b) temp = pow(i, a) * b; else temp = pow(i, a); if (temp > res) res = temp; } return res; } };
没有用到动态规划的思想,如下考虑:和相同求积最大,必然是各分量值越相近越大,问题是分成几个分量。
1、题设绳长度为整数(且大于1),分成整数段,每一段长为整数(也大于1);
2、循环中i含义为当各段长度最为相近时每段的长度,因为有不整除,故有余数存在,因为不能一刀都不切,所以i != number。
欢迎交流指正!!!