Generate Parentheses -- leetcode
题目描述: Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses. 题目大意: 给定整数 n,生成 n 个“()”排列。有 A n n 种。 For example, given n = 3, a solution set is: [ “((()))”, “(()())”, “(())()”, “()(())”, “()()()” ] 思想: 规则:左括号的个数 大于等于 右括号的个数 假设我们已经打印了 m 个括号,此时 左括号剩余 left 个 , 右括号 剩余 right 个 。 是否可以继续打印左括号,取决于 剩余的左括号个数left是否大于0 ,如果大于0,则可以继续打印左括号。 是否可以打印右括号,在 剩余的右括号大于0 的前提下,还要满足 剩余左括号的个数left 小于 剩余右括号的个数right (即 已经打印的左括号个数 大于 已经打印的右括号个数 ),如若,剩余左括号的个数 left 大于 等于 剩余右括号的个数 right, 即已经打印的左括号个数 小于等于 右括号的个数(即:“相等情况:(())”“小于情况(不成立):())”),此时,再打印右括号,导致括号不匹配。 代码: #include