leetcode题库

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

leetcode题库

安静lf   2020-03-14 我要评论

动态规划法适用场景:当前结果与上一个结果相关联

1.整数拆分:将一个整数拆分为至少两个数,然后求各个数的最大乘积。

//定理:将一个数拆解为两个数时:(n/2)*(n-n/2)可得到最大乘积,拆解成大于两个数时,最大乘积为:max(i*f(n-i)),1<i<n/2
class Solution { // 动态规划 public int integerBreak(int n) { if (n <= 3) return n - 1; int[] dp = new int[n + 1]; //初始化,1,2,3特殊处理 dp[1] = 1; dp[2] = 2; dp[3] = 3; for (int i = 4; i <= n; i++) { for (int j = 1; j <= i / 2; j++) { dp[i] = Math.max(dp[i], dp[j] * dp[i - j]); } } return dp[n]; } }

 

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们