LeetCode题解——Generate Parentheses
来源:互联网 发布:沈阳网络电玩城 编辑:程序博客网 时间:2024/05/29 07:37
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:
"((()))", "(()())", "(())()", "()(())", "()()()"
做了一些题目之后,发现使用递归的地方和使用回溯的地方也可以使用动态规划来求解,而且动态规划求解更加易于理解和实现,算法的效率更高。
DP[n]=”(“+DP[k]+”)“+DP[n-k-1]; //for k=0:n-1
DP[0]=""
<pre name="code" class="cpp">//递归方法class Solution {public: vector<string> generateParenthesis(int n) { vector<string> ans; if(n==0){ string s=""; ans.push_back(s); return ans; } vector<string> s1; vector<string> s2; for(int i=0; i<=n-1; i++) { s1=generateParenthesis(i); s2=generateParenthesis(n-i-1); for(auto k1:s1) for(auto k2:s2) { ans.push_back("("+k1+")"+k2); } } return ans; }};12ms
//DP动态规划求解class Solution {public: vector<string> generateParenthesis(int n) { vector<vector<string>> DP(n+1,vector<string>()); DP[0].push_back(""); for(int i=1; i<=n; i++) { for(int k=0; k<i; k++) { for(auto k1:DP[k]) for(auto k2:DP[i-k-1]) { DP[i].push_back("("+k1+")"+k2); } } } return DP[n]; }};//4ms
0 0
- LeetCode题解——Generate Parentheses
- LeetCode题解:Generate Parentheses
- LeetCode题解:Generate Parentheses
- [LeetCode]Generate Parentheses题解
- LeetCode 22. Generate Parentheses 题解 —— Java
- LeetCode 题解(179): Generate Parentheses
- LeetCode——Generate Parentheses
- LeetCode——Generate Parentheses
- LeetCode——Generate Parentheses
- leetcode——Generate Parentheses
- leetcode——Generate Parentheses
- 《LeetBook》LeetCode题解(22): Generate Parentheses[M]
- LeetCode 题解(Week15):22. Generate Parentheses
- leetcode 022 —— Generate Parentheses
- LeetCode OJ——Generate Parentheses
- Leetcode——22. Generate Parentheses
- LeetCode算法题——Generate Parentheses
- 22. Generate Parentheses 题解
- 类的三大特性之封装、继承
- C7_结构体多文件
- Python Security 之 反向Shell
- matlab的小知识点总结(一直补充)
- 【关键字】一些关键字用法总结
- LeetCode题解——Generate Parentheses
- Unity脚本函数的执行顺序
- POJ1144
- 杂谈之单元测试的必要性
- dp cf B. Maximum Submatrix 2
- hdu 2544 最短路
- 机房收费系统之初体验
- 【Spark】RDD机制实现模型
- 网桥代理大师