mirror of
https://github.com/Manoj-HV30/dsa-competitive-programming.git
synced 2026-05-16 19:35:22 +00:00
26 lines
822 B
C++
26 lines
822 B
C++
class Solution {
|
|
public:
|
|
vector<string> generateParenthesis(int n) {
|
|
vector<string> res;
|
|
dfs(0,0, "", n,res);
|
|
return res;
|
|
}
|
|
void dfs(int openP, int closeP, string s, int n, vector<string> & res){
|
|
if(openP == closeP && openP+closeP == 2*n){
|
|
res.push_back(s);
|
|
return;
|
|
}
|
|
|
|
if(openP<n){
|
|
dfs(openP+1, closeP, s+'(', n ,res);
|
|
}
|
|
if(closeP<openP){
|
|
dfs(openP, closeP+1, s+')',n,res);
|
|
}
|
|
}
|
|
};
|
|
|
|
//The recursion goes as deep as possible by completing one full parentheses string before coming back and trying another option.
|
|
//Each recursive call explores one path fully, then backtracks — which is exactly depth-first search
|
|
//Note we are passing s by value, so no need to reset it for every path
|