前置知识:如何判断一个括号序列合法?
考虑将( 视作 1 , ) 视作 -1 ,这样一对括号的匹配可以被视作1-1 = 0
那么满足以下两个条件,这个括号序列就是合法的:
1.整体角度:整个序列的总和需要是0 ,不然就代表左右括号个数不一致,这样不管内部实际是什么顺序,都不可能匹配的。
2.从左往右累加cnt 的过程中,任意时刻需要满足cnt >= 0 。 因为如果cnt < 0 就代表此刻前缀中右括号多于左括号,那不管后续括号是什么状态,这个多出来的右括号都不可能得到匹配了。
数字 n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的括号组合。
一个整数n。
输出若干行,每行一个字符串,代表一个有效的括号组合。
输入
3
输出
((()))
(()())
(())()
()(())
()()()
输入
1
输出
()
提示: