Farmer John 对之前解决平衡括号串问题的经历非常着迷,现在 Farmer John 想请你帮忙解决最后一个问题。
FJ 的农场是由 个牧场组成的一棵大树,每个牧场都被他标记为了 (
或 )
。例如:
'('--'('--')'--'('--')'
| |
')' ')'--'('--'('
| |
')' '('--')'--')'--')'--'('
由于农场是一棵树,这意味着某些牧场之间通过路径连接,任意两个牧场之间有且只有一条唯一的路径。
FJ 相信,这些路径中的某些路径代表了一串平衡括号字符串。具体来说,他想知道在所有由树中路径表示的平衡字符串中,最大嵌套深度是多少。
一个平衡括号字符串的嵌套深度是指该字符串所有前缀中左括号比右括号多出的最大数目。
例如,字符串 ()()()
的嵌套深度为 ,而字符串 ((()))() 的嵌套深度为 。我们可以通过计算每个前缀中左括号的超出数量来清楚地看到这一点:
对于上面的示例,拥有最大嵌套深度的字符串是 ((())),其深度为 ,可以通过如下的从 到 的路径获得:
'('--'('--')'--'('--')'
| |
')' ')'--'('--'(' < A
| |
')' '('--')'--')'--')'--'('
^C ^B
注意:最深的字符串与最长的平衡字符串不同。例如,从 到 的路径 (())(())
的长度为 ,然而,它不是拥有最大嵌套深度的字符串。
你的任务是,输出树中拥有最大嵌套深度的路径的嵌套深度。