If dp[n] stores the number of ways of forming max heap containing n elements, then we have.
dp[n] = nCr(n - 1, n1) * dp[n1] * dp[n2];
i.e.
Select n1 elements out of n - 1 for left subtree.
Elements in left subtree can form max heap in dp[n1] ways.
Elements in right subtree can form max heap in dp[n2] ways.
How to calculate n1 and n2?