Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
generating all valid parenthesis
#include <bits/stdc++.h> using namespace std; #define pb push_back #define N 1000 vector<string> dp[N/2][N], emp; bool vis[N/2][N]; void foo(int opn, int pos, const int n, vector<string>& ans){ if(pos == n){ if(opn) return; ans = emp; return; } if(vis[opn][pos]) return void(ans = dp[opn][pos]); vis[opn][pos] = 1; vector<string>& t = dp[opn][pos]; vector<string> aft; string cur = "("; foo(opn+1, pos+1, n, aft); for(auto &i : aft) t.pb(cur + i); aft.clear(); if(opn > 0){ cur = ")"; foo(opn-1, pos+1, n, aft); for(auto &i : aft) t.pb(cur + i); } ans = t; } int main(){ int n; cin >> n; emp.pb(""); vector<string> ans; foo(0, 0, n*2, ans); cout << ans.size() << " : " << endl; for(auto i : ans) cout << i << endl; return 0; }
run
|
edit
|
history
|
help
0
Mine
MyList
integer division
Bitset Operators
BLREDSET
SayHi
pyramid
Proyecto 1
Microsoft - # of fragments (semi-optimised)
Breakfast Static Function