Generate Parentheses(괄호 일치)[leetcode]

제목: 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:
4"((()))", "(()())", "(())()", "()(())", "()()()" 조건에 맞는 모든 문자열을 열거하고 귀속구해를 한다. 괄호가 n개를 초과하지 않고 오른쪽 괄호의 개수가 왼쪽 괄호보다 작으면 만족한다.
char str[10000];
vector<string>ll;
class Solution {
public:
    vector<string> generateParenthesis(int n) {
        ll.clear();
        hehe(0,n*2,0,0);
        return ll;
    }
    
    void hehe(int i,int n,int leftnum,int rightnum)
    {
        if(i==n)
        {
            str[n]='\0';
            string temp;
            temp=str;
            ll.push_back(temp);
            return;
        }
        if(leftnum+1<=n/2)
        {
            str[i]='(';
            hehe(i+1,n,leftnum+1,rightnum);
        }
        if(leftnum>rightnum)
        {
            str[i]=')';
            hehe(i+1,n,leftnum,rightnum+1);
        }
        
    }
};

좋은 웹페이지 즐겨찾기