打印n对括号的全部有效组合(即左右括号正确配对)
2014-11-17 10:27
106 查看
题目:《程序员面试金典(第5版)》P230 实现一种算法,打印n对括号的全部有效组合(即左右括号正确配对)。
提示:每次递归调用,决定是否加入左右括号。何时加入左括号和右括号?只要左括号没用完,就可以加入左括号。只要使用中的左括号数目大于右括号数目,就可以加入右括号。
提示:每次递归调用,决定是否加入左右括号。何时加入左括号和右括号?只要左括号没用完,就可以加入左括号。只要使用中的左括号数目大于右括号数目,就可以加入右括号。
//res是引用传递,left是左括号的剩余数量,right是右括号剩余数量 void GenerateParenthesesCore(string cur,vector<string> &res,int left,int right) { if(0==left && 0==right)//没有括号可用,将cur加入结果中 { res.push_back(cur); return; } if(left>0)//有左括号可用 { string str=cur; str.append(1,'('); GenerateParenthesesCore(str,res,left-1,right); } if(left<right)//有右括号可用 { string str=cur; str.append(1,')'); GenerateParenthesesCore(str,res,left,right-1); } } vector<string> GenerateParentheses(int n) { vector<string> res; if(n<=0) return res; int left=n-1,right=n; if(n-1>0) { string cur(2,'('); left--; GenerateParenthesesCore(cur,res,n-2,n); } string cur("()"); GenerateParenthesesCore(cur,res,n-1,n-1); return res; }
相关文章推荐
- 9.9递归和动态规划(六)——打印n对括号的全部有效组合(即左右括号正确配对)
- 实现一种算法,打印n对括号的全部有效组合(即左右括号正确配对)
- 打印n对括号的全部有效组合(即左右括号正确配对)
- 9.9递归和动态规划(六)——打印n对括号的所有有效组合(即左右括号正确配对)
- 打印n对括号的全部有效组合
- 程序员面试金典: 9.9 递归和动态规划 9.6打印n对括号的全部有效组合
- 打印n对括号的全部n对有效组合
- 面试编程题拾遗(06) --- 打印n对括号的全部有效组合
- 打印n对括号的全部有效组合
- 打印N对括号的全部有效组合
- 22.Generate Parentheses&n对括号的全部有效组合
- 输入N对括号,输出正确的配对组合
- 输入N对括号,输出正确的配对组合
- Valid Parentheses 判断括号组合是否有效
- Java - - 判断表达式中的括号是否正确配对
- 输出n对括号的所有有效排列组合
- Leetcode22. Generate Parentheses(生成有效的括号组合)
- 括号所有有效组合
- 给定n对括号,编写一个函数来生成正确括号的所有组合。
- Java打印一组数字的全部排序组合