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。
欢迎交流指正!!!