@Anuj, true.This will optimise the solution by reducing the amount of stack space used for recursion.
NUM_PER_DIGIT = 3 char c[][NUM_PER_DIGIT] = {"abc","def",...}; char n[] = 2156169 (number is pressed); int k=7; char * s = (char *) malloc(sizeof(char) * k); void printAllCombinations (int k, char *s, int count) { if (count >= k - 1) { s[k] = '\0'; print (s); } else { for (i =0; i< NUM_PER_DIGIT; i++) { s[i] = c[n[count]][i]; printAllCombinations(k,s, count+1); } } } printAllCombinations (k,s,0); Thanks, Immanuel On Mon, May 23, 2011 at 10:41 PM, anuj agarwal <coolbuddy...@gmail.com>wrote: > Immanuel, > We can keep c and n arrays as global variable as they are not part of state > of the recursion. > > Anuj Agarwal > Engineering is the art of making what you want from things you can get. > > > > On Mon, May 23, 2011 at 10:04 PM, immanuel kingston < > kingston.imman...@gmail.com> wrote: > >> small correction >> >> On Mon, May 23, 2011 at 9:46 PM, immanuel kingston < >> kingston.imman...@gmail.com> wrote: >> >>> A Recursive soln: >>> >>> >>> NUM_PER_DIGIT = 3 >>> char c[][NUM_PER_DIGIT] = {"abc","def",...}; >>> >>> char n[] = 2156169 (number is pressed); >>> int k=7; >>> char * s = (char *) malloc(sizeof(char) * k); >>> >>> void printAllCombinations (char c[][], char n[], int k, char *s, int >>> count) { >>> if (count >= k - 1) { >>> s[k] = '\0'; >>> print (s); >>> } else { >>> for (i =0; i< NUM_PER_DIGIT; i++) { >>> *s[i] = c[n[count]][i];* >>> >>> printAllCombinations(c,n,k,s, count+1); >>> } >>> } >>> } >>> printAllCombinations (c,n,k,s,0); >>> >>> Please correct me if my understanding is wrong. >>> >>> Thanks, >>> Immanuel >>> >>> >>> On Mon, May 23, 2011 at 9:33 PM, immanuel kingston < >>> kingston.imman...@gmail.com> wrote: >>> >>>> Extending the above soln: >>>> >>>> NUM_PER_DIGIT = 3 >>>> char c[][NUM_PER_DIGIT] = {"abc","def",...}; >>>> >>>> char n[] = 2156169 (number is pressed); >>>> int k=7; >>>> >>>> for i <-- 0 to NUM_PER_DIGIT ^ k >>>> String s=""; >>>> for j <-- 0 to k >>>> int index = >>>> getJthDigitinItotheBaseNumPerDigit(NUM_PER_DIGIT,i,j); // ie get 1st digit >>>> in (022)3 returns 2 >>>> s += c[n[j]][index]; >>>> print(s); >>>> >>>> >>>> Time Complexity: O((NUM_PER_DIGIT^k)*k^2); >>>> >>>> >>>> On Mon, May 23, 2011 at 7:32 PM, anshu mishra < >>>> anshumishra6...@gmail.com> wrote: >>>> >>>>> the same question i have asked in microsoft interview. (if it is the >>>>> same :P) >>>>> >>>>> for 12 perutation are (ad, ae, af, bd, be, bf, cd, ce ,cf); >>>>> i have given them 3 solution(recusrsive, stack based) and the last one >>>>> what they wanted. >>>>> >>>>> take a tertiary number(n) = 3^(number of digits) in case of 12 it is >>>>> equals to 2; >>>>> >>>>> i m solving the save problem. assuming on every key there are only 2 >>>>> alphabets. >>>>> >>>>> char c[][2] = {ab , cd, ......}; >>>>> >>>>> char n[] = 2156169 (number is pressed); >>>>> so k = 7; >>>>> for (i = 0; i < (1<<k); i++){ >>>>> string s = ""; >>>>> for (j = 0; j < k; j++){ >>>>> s += c[n[j]][i & (1<<j)] >>>>> } >>>>> print(s); >>>>> } >>>>> >>>>> same logic u can use for tertiary too. >>>>> >>>>> -- >>>>> 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. >> > > -- > 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.