Or one could just simulate a counting from 0 to (numchars^N)-1 in base numchars. ....... code: void printit(int N,char chars[],int index[]){ for(int i=0;i<N;i++){ printf("%c",chars[index[i]]); } printf("\n"); } void generate(int numchars,char chars[],int N){ int index[100]={0}; int allmax=0; int maxdigit=numchars-1; printit(N,chars,index); while(!allmax){ // add one; index[0]++; allmax=0; for(int i=0;i<N;i++){ if(index[i]>=numchars){ index[i]=0; index[i+1]++; } if(i==0&&index[i]==maxdigit){ allmax=1; }
allmax = (index[i]==maxdigit)?allmax&1:0; } printit(N,chars,index); } } int main(){ char chars [] ={'p','o'}; int numchars =sizeof(chars)/sizeof(char); int N=3; generate(numchars,chars,N); } On Fri, Aug 5, 2011 at 12:58 PM, Gaurav Menghani <gaurav.mengh...@gmail.com>wrote: > An Implementation: > > #include<iostream> > #include<string> > using namespace std; > > string alphabet; > int maxlen; > void backtrack(string s,int l) > { > if(l==maxlen) { cout<<s<<endl; return; } > s.push_back('-'); > for(int i=0;i<alphabet.size();i++) > { s[l]=alphabet[i]; backtrack(s,l+1); } > } > > int main() > { > maxlen=3; > alphabet="op"; > backtrack("",0); > return 0; > } > > > On Fri, Aug 5, 2011 at 12:42 PM, Kamakshii Aggarwal > <kamakshi...@gmail.com> wrote: > > @gaurav:i could not understand ur sol.can u explain it again.. > > > > On Fri, Aug 5, 2011 at 12:32 PM, Gaurav Menghani < > gaurav.mengh...@gmail.com> > > wrote: > >> > >> On Fri, Aug 5, 2011 at 12:20 PM, Kamakshii Aggarwal > >> <kamakshi...@gmail.com> wrote: > >> > given a set of letters and a length N, produce all possible > output.(Not > >> > permutation). For example, give the letter (p,o) and length of 3, > >> > produce > >> > the following output(in any order you want, not just my example order) > >> > > >> > ppp ppo poo pop opp opo oop ooo > >> > > >> > another example would be given (a,b) and length 2 > >> > > >> > answer: ab aa bb ba > >> > > >> > -- > >> > Regards, > >> > Kamakshi > >> > kamakshi...@gmail.com > >> > >> This can be done easily by backtracking > >> > >> void backtrack(string s, int l) > >> { > >> if(l == maxlen) { cout<<s<<endl; return; } > >> > >> s.push_back('-'); > >> for(int i=0;i<alphabet.size();i++) > >> { > >> s[l]=alphabet[i]; > >> backtrack(s,l+1); > >> } > >> } > >> > >> -- > >> Gaurav Menghani > >> > >> -- > >> You received this message because you are subscribed to the Google > Groups > >> "Algorithm Geeks" group. > >> To post to this group, send email to algogeeks@googlegroups.com. > >> To unsubscribe from this group, send email to > >> algogeeks+unsubscr...@googlegroups.com. > >> For more options, visit this group at > >> http://groups.google.com/group/algogeeks?hl=en. > >> > > > > > > > > -- > > Regards, > > Kamakshi > > kamakshi...@gmail.com > > > > -- > > You received this message because you are subscribed to the Google Groups > > "Algorithm Geeks" group. > > To post to this group, send email to algogeeks@googlegroups.com. > > To unsubscribe from this group, send email to > > algogeeks+unsubscr...@googlegroups.com. > > For more options, visit this group at > > http://groups.google.com/group/algogeeks?hl=en. > > > > > > -- > Gaurav Menghani > > -- > You received this message because you are subscribed to the Google Groups > "Algorithm Geeks" group. > To post to this group, send email to algogeeks@googlegroups.com. > To unsubscribe from this group, send email to > algogeeks+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/algogeeks?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group. To post to this group, send email to algogeeks@googlegroups.com. To unsubscribe from this group, send email to algogeeks+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.