• 剪绳子


    剑指offer

    剪绳子

    贪心算法

    public class Solution {
        public int cutRope(int target) {
    
            //分解一定程度得到的就是2与3之间的关系,3越多越好
            //当%3的余数是0  6%3=2······0   3+3  =》3*3=9
                //这个时候全是3,乘积最大毕竟 2*2*2<3*3
            //当%3的余数是1  7%3=2······1
                                //    3+3+1  =》3*3=9
                                 //    2+2+3=》2*2*3=12
            //分出一个1 然后凑成2个2
            //当%3的余数是2  8%3=2······2
                                   //    3+3+1  =》3*3=9
                                 //    2+2+3=》2*2*3=12
            //注意到取余得到的值决定2的个数,用当前数除以3的到的值决定3的个数
            
            
            //试数,1---》0*1;2---》1*1;3---》1*2
            if(target<=3&&target>0){
                return target -1;
            }
            
            
            int p = 0;//商
            int q = 0;//余数
             p = target/3;
             q = target%3;
            double res = 0;//保存最终结果,这个地方用到了pow函数,返回值类型为doble,所以为了符合题意,要强转为整形int
            if(q == 0){
                //余数为0,说明全是3
                res = Math.pow(3,p);
            }
            if(q == 1){
                //余数为1,2的个数加一个,3的个数少一个
                res =2*2* Math.pow(3,p-1);
            }
            if(q == 2){
                //余数为2,拿个2和全部的3相乘
                res = 2*Math.pow(3,p);
            }
            return (int) res;
        }
    }
    
  • 相关阅读:
    Mesos 配置项解析
    1039. Course List for Student (25)
    Cts框架解析(12)-ITargetPreparer
    通过ulimit改善linux系统性能(摘自IBM)
    HDU 1080 DP
    C语言调用Lua函数
    创建MySQL从库
    C# Func&lt;&gt;托付
    SpringMVC入门
    VNC连接Ubuntu 16.04桌面灰色的问题解决
  • 原文地址:https://www.cnblogs.com/albertshine/p/13426722.html
Copyright © 2020-2023  润新知