[leetcode]Generate Parentheses
class Solution { public: //p是当前的string( 例如"((()" );k是当前长度,例如4;n是总长度;lMore是左括号比右括号多多少 void generateParenthesis(string p, int k, int n, int lMore){ if (lMore < 0) return; if (k == n){ if (lMore == 0) result.push_back(p); //如果满足条件,push_back并退出 return; //如果不满足条件,直接退出 } string p2 = p + "("; generateParenthesis(p2, k+1, n, lMore+1); string p3 = p + ")"; generateParenthesis(p3, k+1, n, lMore-1); } vector<string> generateParenthesis(int n) { // Start typing your C/C++ solution below // DO NOT write int main() function result.clear(); if (n<1) return result; string p; //p用来存储已经生成的括号对 p.resize(2*n); p.clear(); generateParenthesis(p, 0, 2*n, 0); return result; } private: vector<string> result; };
EOF