题解 | #剪绳子#

剪绳子

https://www.nowcoder.com/practice/57d85990ba5b440ab888fc72b0751bf8

- 首先证明递退关系:
证明:
1, 已知原始递退关系:
 
2, 初始值:
a[2] = 1;
a[3] = 2;
3, 当 i>=4 时, i<=a[i]
4, 结合 条件1条件3 可知,当  i>=4 时, i*a[n-i] < a[i]*a[n-i]
因此
a[n] = \max_{i=2}^{i<4}(i*a[n-i])

- 代码实现
int cutRope(int n) {
        // write code here
        if (n < 3){
            return 1;
        }

        vector<int> square;
        square.push_back(1);
        square.push_back(1);
        square.push_back(1);
        int last = 1;
        for(int i = 3; i <= n; i++) {
            int m2 = square[i-2] * 2;
            int m3 = square[i-3] * 3;
            last = m2 > m3? m2: m3;
            square.push_back(last);
        }
        return last;
    }

全部评论

相关推荐

07-11 15:12
门头沟学院 Java
别人在上班,我就在工位上看看视频啥的,这正常吗?
程序员小白条:实习就是摸鱼,只是公司指标,把你进来了,可能那时候客户很多,但等你进来的时候,已经是淡季了,根本没多少需求,或者说根本不适合实习生去完成,因此你就每天干坐着就行,可能1,2个月都没需求
实习生的蛐蛐区
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务