第十六周算法分析与设计:Generate Parentheses
来源:互联网 发布:淘宝联盟好赚钱吗 编辑:程序博客网 时间:2024/05/17 22:05
问题描述:
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:
[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]
Subscribe to see which companies asked this question.
问题出自此处
解法思路:
这是一道关于backtracking的问题,题意是求n对括号的全排列,但要求排列要合法。
可以这样考虑:
停止条件:当字符串的长度为
状态转换过程:假设当前得到的字符串为cur_str,当它比n小时(表示当前字符串还可以容纳至少一对”()“),则将cur_str+”(“进入下一个新的状态;如果cur_str关于上一个”(“的回溯完成后,可以加入对应于这个”(“的右括号即”)”,当然前提是右括号的个数要比左括号的个数要小才能存在对应的。
class Solution {public: int l_used=0, r_used=0; vector<string> generateParenthesis(int n) { vector<string> result; permutation(result,"",0,0,0,n); return result; } void permutation(vector<string>&result, string cur_str, int l_used, int r_used, int len,int n) { if (len == n * 2){ result.push_back(cur_str); return; } else{ if (l_used < n){ permutation(result, cur_str+"(", l_used+1, r_used, len+1,n); } if (r_used < l_used){ permutation(result, cur_str+")", l_used, r_used+1, len+1,n); } } }};
时间复杂度为
还有个注意的问题。就是在进入状态转换函数之前不能先将字符串修改了!!!否则的话就会进入不了下个状态,只会得到一个结果。(n=3、4的时候是这样。。)
阅读全文
0 0
- 第十六周算法分析与设计:Generate Parentheses
- 算法设计与分析(15) -- Generate Parentheses(难度:Medium)
- 算法分析与设计第十六周
- (算法分析Week11)Generate Parentheses[Medium]
- 算法分析与设计第十六周:582. kill process
- 算法设计与应用基础:第十六周
- 【算法分析与设计】【第十六周】期中小结(中)(未完)
- 【leetcode】Generate Parentheses 算法解析
- leetcode Generate Parentheses 回溯算法
- 22. Generate Parentheses 回溯算法
- 算法设计与应用基础:第十六周(1)
- 算法设计与应用基础:第十六周(1)
- 算法设计与结构基础作业第十六周
- 算法分析与设计丨第十六周丨LeetCode(20)——Unique Paths II(Medium)
- LeetCode Generate Parentheses 深度分析理解
- 每日算法之二十:Generate Parentheses
- 算法系列——Generate Parentheses
- LeetCode算法题——Generate Parentheses
- 学习笔记——JAVA设计模式<2>工厂模式
- 【递归输出图形】POJ_1941
- tomcat+mysql+java+spring模式下的action返回值中文乱码问题
- 如何防止网站被运营商劫持投放广告
- 蚂蚁分类信息系统5.8 数据标签调用方法(-)
- 第十六周算法分析与设计:Generate Parentheses
- 什么叫事务?Java如何处理事务呢?
- Word Vector Representation
- 苹果正式规定:用户打赏属应用内消费 要分成30%
- 2017 计蒜之道 复赛 <状压DP+最短路>
- 假设检验
- Java事务处理总结
- JSP 2.x中另一种自定义标签编写方法
- 明明的leetcode日常:3. Longest Substring Without Repeating Characters