回溯算法:括号生成

机场

注意

在生成括号的过程,左括号要限制又括号数量

代码

class Solution {
private:
    vector<string> result;
    string str;
    void backtracking(int n, int left, int right) {
        if (str.size() == n * 2) {
            result.push_back(str);
            return;
        }
        if (left < n) {
            str += '(';
            backtracking(n, left + 1, right);
            str.pop_back();            
        }
        if (right < left) { // 这里只能传入left因为右括号小于等于左
            str += ')';
            backtracking(n, left, right + 1);
            str.pop_back();
        }
    }
public:
    vector<string> generateParenthesis(int n) {
        backtracking(n,0,0);
        return result;
    }
};
posted @ 2023-03-07 09:26  壹剑霜寒十四州  阅读(12)  评论(0编辑  收藏  举报