Question 46
How many matching arrangement methods can be used for N pairs of parentheses? For example, two pairs of parentheses can have two types: () and (())
The main idea is recursion!
# Include "stdafx. H "# include <iostream> // # include <cassert> # include <vector> using namespace STD; void print (vector <char> V) {for (vector <char>:: iterator beg = v. begin (); beg! = V. end (); ++ beg) cout <* beg <"; cout <Endl;} void matchnums (INT nsize, int nlen, vector <char> & V) {int nleftbrackets = 0; int nrightbrackets = 0; For (vector <char >:: iterator beg = v. begin (); beg! = V. end (); ++ beg) {If (* beg = '(') nleftbrackets ++; elsenrightbrackets ++; If (nrightbrackets> nleftbrackets) return; if (nleftbrackets + nrightbrackets = nsize & nleftbrackets = nrightbrackets) print (V);} If (nlen> 0) {v. push_back ('); matchnums (nsize, nLen-1, V); V. pop_back (); V. push_back ('); matchnums (nsize, nLen-1, V); V. pop_back () ;}} int main () {vector <char> V; int n = 6; matchnums (N, N, V); Return 0 ;}