面试题 08.09. 括号 力扣(中等) 是我想不出来的回溯

题目描述:

括号。设计一种算法,打印n对括号的所有合法的(例如,开闭一一对应)组合。

说明:解集不能包含重复的子集。

例如,给出 n = 3,生成结果为:

[
  "((()))",
  "(()())",
  "(())()",
  "()(())",
  "()()()"
]

题源:https://leetcode-cn.com/problems/bracket-lcci/

题解:https://leetcode-cn.com/problems/bracket-lcci/solution/sui-ran-bu-shi-zui-xiu-de-dan-zhi-shao-n-xjx1/

代码:

class Solution {
    vector<string> ans;
public:
    void dfs(string s,int l, int r)
    {
        if(l==0 && r==0) 
        {
            ans.push_back(s); 
            return;
        }
        if(l>0) dfs(s+(,l-1,r);   //如果可以插入做左括号
        if(l<r) dfs(s+),l,r-1);    // 右括号数量不能>=左括号,不合法
    }
    vector<string> generateParenthesis(int n) {
     dfs("",n,n);
     return ans;
    }
};

 

面试题 08.09. 括号 力扣(中等) 是我想不出来的回溯

上一篇:Oracle Grid Infrastructure Installation Guide for Linux 以debug模式安装并记录日志


下一篇:File