树的高度: 定义为所有叶子到根路径上节点个数的最大值.
例如: 当n=3,m=3时,有如下5种方案:
数据范围:
进阶:时间复杂度
,空间复杂度%5C)
第一行输入两个正整数和
.
输出一个答案表示方案数.
3 3
5
3 2
1
4 3
6
def func(a, b, dp): return 2*dp[a]*dp[b] if a !=b else dp[a]*dp[b] mod = 10 ** 9 + 7 node, layer = list(map(int, input().split())) dp = [0] * (node + 1) dp[0] = 1 for i in range(1, layer+1): bkup = dp[:] for j in range(1, min(2**i, node+1)): a, b = 0, j-1 ans = 0 while a<=b: ans += func(a, b, bkup) a += 1 b -= 1 dp[j] = ans % mod print(dp[-1])