1. A Simple Algorithm for Print All Combination of Balanced Parentheses
#include<iostream>#include<cassert>usingnamespacestd;constintMAX=20;voidprint_bracket(intlevel,charout[],intn,intflag);voidprint_bracket_v2(intn,intpos,intclose,intopen);intmain(){intn=3;intflag=0;char*out=newchar[2*n];/* we can define a static char array inside the print_bracket function */print_bracket(2*n,out,2*n,flag);cout<<"another method:"<<endl;print_bracket_v2(n,0,0,0);return0;}voidprint_bracket_v2(intn,intpos,intclose,intopen){staticcharoutput[MAX];if(close==n){for(inti=0;i<2*n;i++){cout<<output[i]<<"\t";}cout<<endl;return;}if(open<n){output[pos]='(';print_bracket_v2(n,pos+1,close,open+1);}if(open>close){output[pos]=')';print_bracket_v2(n,pos+1,close+1,open);}}voidprint_bracket(intlevel,charout[],intlen,intflag){if(level==0){if(flag==0){for(inti=len-1;i>=0;i--){cout<<out[i]<<"\t";}cout<<endl;}return;}/* this condition filter the illegal bracket */if(flag<0){return;}out[level-1]='(';flag++;print_bracket(level-1,out,len,flag);/* recover the modified flag */flag--;out[level-1]=')';flag--;print_bracket(level-1,out,len,flag);}
2. Find the Element Pair in Array with Sum Equals to a integer