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.

Reply via email to