代码随想录 Day41 - 动态规划(二)
343. 整数拆分
DP 五部曲:
定义 dp 数组及下标含义:本题定义为拆分数字 i,得到的最大乘积为 dp[i];
确定递推公式: dp[i] = max(dp[i], (i - j) * j, dp[i- j] * j} );
初始化,dp[0]/dp[1]无意义,可以从 2 开始,dp[2] = 1;
确认遍历顺序;
举例推导 dp 数组(打印 dp 数组,验证是否符合预期);
复制代码
96. 不同的二叉搜索树
DP 五部曲:
定义 DP 数组含义:dp[i]可以表示为从 1~i 为不同元素节点组成的二叉搜索树的个数;
确认递推公式: dp[i] += dp[j - 1] * dp[i - j]
初始化 dp 数组,dp[0] = 1
确认遍历顺序,因为状态 i 依赖此前的状态,故从 1 开始遍历到 i
举例推导 dp 数组,辅助打印确认是否正确。
复制代码
版权声明: 本文为 InfoQ 作者【jjn0703】的原创文章。
原文链接:【http://xie.infoq.cn/article/a8d129991a51067bd8b654841】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论