zoukankan      html  css  js  c++  java
  • [LeetCode]Integer Break

    题目:Integer Break

    Given a positive integer n, break it into the sum of at least two positive integers and maximize the product of those integers. Return the maximum product you can get.

    For example, given n = 2, return 1 (2 = 1 + 1); given n = 10, return 36 (10 = 3 + 3 + 4).

    Note: You may assume that n is not less than 2 and not larger than 58.

    题意:将一个正整数分解成k个正整数的和的形式使得这些正整数的乘积最大,输出他们的积。

    思路:

    他更像一个数学题;

    首先什么样的数的乘积最大呢?

    如果是2,则不分解,它本身最大;

    如果是3,则不分解,它本身最大;

    如果是4,则不分解,它本身最大;

    如果是5,则分解成2和3,乘积是6最大;

    如果是6,则分解成3和3,乘积是9最大;

    ...

    到这里就可以看出来,分解成只有2和3的数的乘积是最大的,而且优先分解成3直到只剩下一个2,此时才是最优解。

    int integerBreak(int n){
        if (n < 2)return 0;
        if (n < 4)return n - 1;
        if (n == 4)return 4;
        int k = n / 3;
        if (n % 3 == 1){
            return 4 * pow(3, k - 1);
        }
        else if (n % 3 == 2){
            return 2 * pow(3, k);
        }
        return pow(3, k);
    }
  • 相关阅读:
    1)BS和CS区别
    109)PHP与oracle网址
    8)对于带有 : 的语句
    将位数较多的数字看成是字符串
    7)杂项没整理
    css中的zoom的使用
    CSS布局一
    ul和ol的一些知识
    css中的display
    css中的content的使用
  • 原文地址:https://www.cnblogs.com/yeqluofwupheng/p/7350768.html
Copyright © 2011-2022 走看看