LeetCode Generate Parentheses

题目

Given n pairs ofparentheses, write a function to generate all combinations of well-formedparentheses.

For example, given n= 3, a solution set is:

"((()))","(()())", "(())()", "()(())", "()()()"

 

保留1、已经处理的长度,2、需要处理的长度 3、未匹配的( 数, 4、已经出现过的( 数,5、处理好的字符串。

 

迭代:

一、如果1=2,保存5

二、否则,如果4<n,处理1加一,23加一,4加一,5+=”(”;如果3>0,处理1加一,23减一,45+=”)”

 

代码:

class Solution {
	vector<string> ans;
	string s;
public:
	void genPar(int deep,int n,int left,int totleft,string s)
	{
		if(deep==n)
			ans.push_back(s);
		else
		{
			if(totleft<n/2)
				genPar(deep+1,n,left+1,totleft+1,s+"(");
			if(left>0)
				genPar(deep+1,n,left-1,totleft,s+")");
		}
	}

    vector<string> generateParenthesis(int n) {
		ans.clear();
		s.clear();
		genPar(0,n*2,0,0,s);
        return ans;
    }
};


 

 

 

 

 

你可能感兴趣的:(LeetCode,C++,算法)