
class Solution {
public:
vector<string> res;
vector<string> generateParenthesis(int n) {
if(n==0)
return res;
back("", n, n);
return res;
}
void back(string str, int m, int n){
if(m==0&&n==0){
cout<<"str:"<<str<<endl;
res.push_back(str);
return;
}
cout<<"m_n: "<<m<<" "<<n<<endl;
if(m>n) // 如果剩余左括号大于右括号肯定无法匹配
return;
// 如果剩余左扩号等于右括号,肯定先添加左括号
// 如果剩余左扩号小于右括号,添加左括号和右括号都可以
/*
if(m==n)
back(str+"(", m-1, n);
else if(m<n)
back(str+"(", m-1, n);
back(str+")", m, n-1);
*/
// 所以代码合并以后为:
if(m>0)
back(str+"(", m-1, n);
if(n>0)
back(str+")", m, n-1);
}
};