第六十九天-动态规划(dp动态规划)

1.maven项目包结构:

dao层和db交互,dao层上一层上service层,service再上一层是controller层,util包存放工具类,vo-view object/value object,封装pojo,pojo数据库对象,common存放常量

2.Arrays.fill()设置数组初始值

3.343. 整数拆分

给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。

返回你可以获得的最大乘积。

示例 1:

输入: n = 2

输出: 1

解释: 2 = 1 + 1, 1 × 1 = 1。

解题思路:将当前数字分割成两部分的和,找出这两部分的积、当前最大的积、第一部分与第二部分最大积的乘积,这三个数中的最大值,即为当前数字积最大的分割。使用一个数组来存储每个数字计算的结果,从第一个可以分割为两个正整数的和的数2开始,自底向上地找到n的最大分割积

class Solution {
    public int integerBreak(int n) {
        int[] memo = new int[n+1];
        Arrays.fill(memo, -1);
        memo[1] = 1;
        for(int i=2; i<=n; i++){
            for(int j=1; j<=i-1; j++){
                memo[i] = max3(memo[i], j*(i-j), j*memo[i-j]);
            }
        }
        return memo[n];
    }
    public int max3(int a, int b, int c){
        return Math.max(a, Math.max(b, c));
    }
}
原文链接:,转发请注明来源!