DFS暴力搜索(超简单)

剪绳子

http://www.nowcoder.com/questionTerminal/57d85990ba5b440ab888fc72b0751bf8

DFS暴力搜索(超简单):

class Solution {
public:
    int maxx;
    void dfs(int n,int mul){//n为目前还差的数量,mul是已经凑成的乘积
        if(n==0||n==1){ //如果n还剩0或者1,那么说明已经凑够了n
            if(mul>maxx)maxx=mul;
            return;
        } 
        for(int i=2;i<=n;i++){//从2开始是因为分出1的话,肯定会变小,比如4分出1还剩3,1*3<4所以不分1
            dfs(n-i,mul*i); //-i说明凑出了一个i,然后乘积*i;
        }
    } 
    int cutRope(int number) {
        maxx=0;
        if(number<=3)return number-1;//如果number小于等于3必须要分出一个1
        dfs(number,1);
        return  maxx;
    }
};
全部评论

相关推荐

10-29 18:20
济南大学 Java
用微笑面对困难:他不是人事吗,怎么净特么不干人事
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

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