括号序列计数

1.设\(f(n,m,k)\)表示有\(n\)个左括号,\(m\)个右括号,子序列中合法括号序列最长长度为\(2k\)的括号序列,转移为

\[f(n,m,k)= \left\{ \matrix{ {n+m}\choose n && k\ge min(n,m)\\ f(n-1,m,k-1)+f(n,m-1,k) && k<min(n,m) } \right. \]

通过归纳可以得到

\[f(n,m,k)= \left\{ \matrix{ {n+m}\choose n && k\ge min(n,m)\\ {n+m}\choose k && k<min(n,m) } \right. \]

2.对于一个括号序列来说,要想构造一个最长的合法子括号序列,没有用上的右括号的数量就是前缀和的min。可以考虑像算卡特兰数那样将跨过某条斜线之后的路径全部取反。

posted @ 2024-02-03 14:42  lprdsb  阅读(146)  评论(0)    收藏  举报