首页 > 其他 > 详细

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

时间:2021-07-19 14:15:34      阅读:21      评论:0      收藏:0      [点我收藏+]

题目描述:

括号。设计一种算法,打印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. 括号 力扣(中等) 是我想不出来的回溯

原文:https://www.cnblogs.com/stepping/p/15029270.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!