gpt4 book ai didi

使用 Dynamic Prog 的加泰罗尼亚数字

转载 作者:太空宇宙 更新时间:2023-11-04 04:49:09 25 4
gpt4 key购买 nike

我在计算n个节点的二叉搜索树的个数,结果发现是加泰罗尼亚数。

现在,使用 DP,这是我的尝试。

create arr[n+1];
arr[0]=1;
arr[1]=1;
for(i=2;i<n+1;i++)
arr[i]=0;
for(j=1;j<i;j++)
arr[i]+=arr[i-j]*arr[j];

//arr[n] gives the answer?

这是正确的方法吗?

还能更好吗?

最佳答案

我不认为你的代码有效。您是指从 1n 的唯一二叉搜索树的数量吗?

对于n = 3,数字应该是5。但是你的代码给了我结果 2

1         3     3      2      1
\ / / / \ \
3 2 1 1 3 2
/ / \ \
2 1 2 3

这是我的解决方案:

int numTrees(int n) {
int dp[n+1];
memset(dp, 0, sizeof(dp));
dp[0] = 1;
dp[1] = 1;
for (int i = 2; i <= n; ++i)
for (int j = 1; j <= i; j++)
dp[i] += dp[j-1] * dp[i-j];
return dp[n];
}

对于加泰罗尼亚数,P(3) = P(1)P(2) + P(2)P(1)

但是在这个问题中,P(3) = P(0)P(2) + P(1)P(1) + P(2)P(0)

所以,我想这不是加泰罗尼亚数字。希望对您有所帮助。

关于使用 Dynamic Prog 的加泰罗尼亚数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17695161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com