dp数组:dp数组定义为二位数组 记录整个路程中的所有点
初始化:第一列和第一行都是1,因为只能向右或向下走
递归公式: 任何一个点都是由上方点和左方点相加得到
遍历顺序:遍历从左到右 从上到下 由点1,1开始
dp数组:dp数组定义为二位数组 记录整个路程中的所有点
初始化:第一列和第一行当obstacleGrid没遇到1之前dp数组都是1,遇到之后全是0,因为只能向右或向下走,如果最右下角或者左上角有障碍,return 0
递归公式: 任何一个点都是由上方点和左方点相加得到,但如果这个点的的坐标在obstacleGrid中==1,也就是有障碍,直接continue(终止后续)
遍历顺序:遍历从左到右 从上到下 由点1,1开始
dp数组:每一个数字的最大乘积
初始化:dp[0] 没有意义 dp[1] == 1 dp[2] ==1;
递归公式:以下三种的最大值
1.j(i-j) j为第一个数字 i-j为第二个数字
2.j*dp[i-j] 大于两个的情况, j = 第一个数字 dp[i-j] 后面无论是分成几个数字相乘得到的最大值
3.dp[i] dp[i] 本身的值假如在之前j =1 得到的值要比 j =2得到的值更大 就不更新了
遍历顺序:第一层 i = 3 到 n,代表dp中每个dp[i] 的值
第二层 j = 1 到 i/2 代表对于数字的拆分,由于两个数相乘越相似 乘积越大 所以 i = 1 到 i/2为止就是最大的情况了
dp数组:用来存 1 - n个节点的二叉树种类数
初始化:dp [0] =1,就空数
递归公式:dp[i] += dp[j] * dp[i - j-1;
j代表左边树有多少种 i-j-1代表右边树有多少种 -1是其中作为根节点的的一个
遍历顺序:
i从1 -> n 分别代表1 ->n个节点
j从0->i 代表左节点数 因为最多左数会有i-1个数 而且这种情况下 没有右树