对于给定的 n 找到有效括号的有效组合的数量。我告诉他加泰罗尼亚数的直接公式(因为我之前遇到过这个问题)但他特别想要这个问题使用动态编程的解决方案,并想要带有测试用例解释的工作解决方案。我没有设法找到有效的解决方案。
例如:
n=1 有效面值=0
n=2 有效面值=1
现在我只想了解这个问题
我找到了一种解释,但没有得到它请您帮助我理解,或者您能否提供对以下逻辑的更详细的解释(这似乎是正确的)
你需要偶数个括号,如果 C(n) 用 2 * n 括号表示有效括号的数量,那么
C(0)=1 and for any n>0
C(n)=C(0) * C(n-1)+C(1) * C(n-2)+...+C(n-1) * C(0)=sum(i=0,n-1,C(i) * C(n-1-i))
因为您需要以 '(' 开头并查看带有 ')' 的右括号在哪里,如果它们之间有 2 * i 括号,那么这种情况的数量是C(i) * C(n-1-i)
.