题目:输入一个整数n,输出所有的括号组合,n组括号的组合。
eg:
For example, given n = 3, a solution set is:
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
思路:
将当前的左括号数与右括号数组合成(x, y)的形式,将其看成是图的一个节点,如果当前结点的x > y,那么当前结点有两个相邻节点(x + 1, y)和(x, y + 1),否则只有一个相邻节点(x + 1, y),这是由于x必须大于等于y,因为当前的左括号数要比右括号数多或者等。
其实这种排列问题都可以转化为图搜问题。
这样建模成图的遍历问题就可以采用两种方式进行,深度优先与广度优先,下面是两种方法的解:




博客围绕输入整数n输出所有括号组合的问题展开。将左、右括号数组合成节点,根据左括号数与右括号数的关系确定相邻节点,把该排列问题转化为图搜问题,可采用深度优先和广度优先两种方式求解。
593

被折叠的 条评论
为什么被折叠?



