赞
踩
给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。
返回 你可以获得的最大乘积 。
class Solution { public: int integerBreak(int n) { // 定义dp数组 vector<int> dp(n + 1); dp[2] = 1;// 初始化dp[2] for(int i = 3; i <= n; i++) { for(int j = 1; j < i - 1; j++) { // 状态转移方程 // 定一移二 对于每一个dp[i] 循环遍历j j是从1开始遍历到 i - 2 正好得到dp[2] dp[i] = max(dp[i],max(j * (i - j),j * dp[i - j])); } } return dp[n]; } };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。