如果 dp[n] 存储了形成包含 n 个元素的最大堆的方式的数量,那么我们有。
dp[n] = nCr(n - 1, n1) * dp[n1] * dp[n2];
IE
从 n - 1 中选择 n1 个元素作为左子树。
左子树中的元素可以以 dp[n1] 的方式形成最大堆。
右子树中的元素可以以 dp[n2] 的方式形成最大堆。
如何计算n1和n2?
如果 dp[n] 存储了形成包含 n 个元素的最大堆的方式的数量,那么我们有。
dp[n] = nCr(n - 1, n1) * dp[n1] * dp[n2];
IE
从 n - 1 中选择 n1 个元素作为左子树。
左子树中的元素可以以 dp[n1] 的方式形成最大堆。
右子树中的元素可以以 dp[n2] 的方式形成最大堆。
如何计算n1和n2?