Untitled
class Solution { public: void solve(int open, int close, string ans, vector<string>&res){ //we are decreasing no of open and close left if(open==0 && close==0){ res.push_back(ans); return; } if(open >0) solve(open-1,close,ans+'(',res); //we can afford more open if(close > open) solve(open,close-1,ans+')', res); //we can afford more close } vector<string> generateParenthesis(int n) { int open=n, close=n; vector<string> res; solve(open,close,"",res); return res; } };