标签:style blog color io 使用 ar for div cti
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
"((()))", "(()())", "(())()", "()(())", "()()()"
使用深度搜索,对于每个位置我们都可以放"(", ")",但是要符合正确的括号形式,那么在任何深搜的时候都要符合左括号的数目要小于等于右括号的数目,即优先保证 在左括号数==右括号数的情况下,先放左括号,代码如下:
1 class Solution { 2 public: 3 vector<string> generateParenthesis(int n) { 4 ans.clear(); 5 string str; 6 dfs(str, n, n); 7 return ans; 8 } 9 10 void dfs(string& tstr, int leftnum, int rightnum) { 11 if( leftnum > rightnum ) return ; //保证左括号数==右括号数的情况下,优先放左括号 12 if( leftnum == 0 && rightnum == 0 ) { //当左括号和右括号剩余数均为0的情况下,那么这是个符合要求的括号集 13 ans.push_back(tstr); 14 return ; 15 } 16 if( leftnum > 0 ) { //左括号还有剩余 17 tstr.push_back(‘(‘); 18 dfs(tstr, leftnum-1, rightnum); 19 tstr.pop_back(); 20 } 21 if( rightnum > 0 ) { //右括号还有剩余 22 tstr.push_back(‘)‘); 23 dfs(tstr, leftnum, rightnum-1); 24 tstr.pop_back(); 25 } 26 } 27 28 private: 29 vector<string> ans; 30 };
标签:style blog color io 使用 ar for div cti
原文地址:http://www.cnblogs.com/bugfly/p/3950821.html