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
<[email protected]>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
> <[email protected]> wrote:
> > @gaurav:i could not understand ur sol.can u explain it again..
> >
> > On Fri, Aug 5, 2011 at 12:32 PM, Gaurav Menghani <
> [email protected]>
> > wrote:
> >>
> >> On Fri, Aug 5, 2011 at 12:20 PM, Kamakshii Aggarwal
> >> <[email protected]> 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
> >> > [email protected]
> >>
> >> 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 [email protected].
> >> To unsubscribe from this group, send email to
> >> [email protected].
> >> For more options, visit this group at
> >> http://groups.google.com/group/algogeeks?hl=en.
> >>
> >
> >
> >
> > --
> > Regards,
> > Kamakshi
> > [email protected]
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Algorithm Geeks" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected].
> > 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 [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> 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 [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to