my logic: if wrong then plz tell...

start from rightmost digit and search towards left a digit less than this...
if found ... just swap...u got the answer... if no small digit found then
select second rightmost digit and follow the same process...and so on...

....

for ex: 759354

rightmost digit =4

search for smaller digit than 4 towards left... it will be 3...

then answer 759453


....

On Thu, Sep 22, 2011 at 4:40 PM, Yogesh Yadav <medu...@gmail.com> wrote:

> @algo geek:
>
> there is some error in your logic...
>
> consider a number 759845
>
> according to ur logic the number greater than this will be 784559
>
> but it should be 759854....
>
> .....
>
>
> On Thu, Sep 22, 2011 at 4:24 PM, algo geek <geeka...@gmail.com> wrote:
>
>> Keep a pointer ont the rightmost digit. Keep moving right until you find
>> the number in increasing number. As soon as this breaks. stop. Swap the
>> digit at the current position with the smallest digit, but larger than the
>> current position digit, sort the array to the right of the current position
>> in descending order.
>>
>> explanation:
>> NUMBER:759854
>> INDEX:     012356
>>
>> Keep the pointer at index 6. Keep moving right as long as numbers are in
>> increasing fashion. Stop at index 1.
>> swap this digit with the smallest digit larger than 5 i.e. 8
>> 78(9554)
>> now sort the array in parenthesis in descending order
>> ans : 784559
>>
>> For the implementation you can actually create an array of length 10, to
>> keep track of all the digits encounters while moving left. This will help in
>> sorting as well (similar to counting sort).
>> One pass will do the work. You can print the answer directly afterwards.
>>
>> With Regards
>> Unknown
>>
>>
>> On Thu, Sep 22, 2011 at 4:13 PM, Dheeraj Sharma <
>> dheerajsharma1...@gmail.com> wrote:
>>
>>> in nlog(n)
>>>
>>> #include<iostream>
>>> #include<conio.h>
>>> #include<string.h>
>>> #define swap(a,b,c) (c)=(a),(a)=(b),(b)=(c)
>>> using namespace std;
>>> int t;
>>> void quicksort(char arr[],int left,int right)
>>> {
>>>      if(left<right)
>>>      {
>>>                    int piv=right;
>>>                    int i=left,j=left;
>>>                    while((i<right) && (j<right))
>>>                    {
>>>                     if(arr[j]<arr[piv])
>>>                     {
>>>                     swap(arr[i],arr[j],t);
>>>                     i++;
>>>                     }
>>>                     j++;
>>>                    }
>>>                    swap(arr[i],arr[piv],t);
>>>                    quicksort(arr,left,i-1);
>>>                    quicksort(arr,i+1,right);
>>>
>>>                    }
>>>      }
>>> int main()
>>> {
>>>     char str[100],t;
>>>     int arr[100],i=0;
>>>     cin>>str;
>>>     int min=0;
>>>     int len=strlen(str);
>>>     while(str[i])
>>>     {
>>>                  if(str[i]<=str[min])
>>>                  min=i;
>>>                  arr[i]=min;
>>>                  i++;
>>>                  }
>>>      i=len-1;
>>>      while((arr[i]==i)&&(i>0))
>>>      i--;
>>>      swap(str[i],str[arr[i]],t);
>>>
>>> if(i>0)
>>> quicksort(str,arr[i]+1,len-1);
>>>     cout<<str;
>>>  getch();
>>> }
>>>
>>>
>>> On Thu, Sep 22, 2011 at 3:33 PM, Dheeraj Sharma <
>>> dheerajsharma1...@gmail.com> wrote:
>>>
>>>> #include<iostream>
>>>> #include<conio.h>
>>>> #include<string.h>
>>>> #define swap(a,b,c) (c)=(a),(a)=(b),(b)=(c)
>>>> using namespace std;
>>>> int main()
>>>> {
>>>>     char str[100],t;
>>>>     cin>>str;
>>>>
>>>>     int len=strlen(str);
>>>>  int i,x,boo=1;
>>>>     for(i=len-1;i>0&&boo;i--)
>>>>     {
>>>>         for(x=i-1;x>=0&&boo;x--)
>>>>         {
>>>>             if(str[x]<str[i])
>>>>             {
>>>>             swap(str[x],str[i],t);
>>>>             boo=0;
>>>>             }
>>>>             }
>>>>             }
>>>> if(i>0)
>>>> {
>>>>
>>>> //Sorting...
>>>>            for(int l=x+2;l<len-1;l++)
>>>>            {
>>>>                    int min=l;
>>>>                    for(int k=l+1;k<len;k++)
>>>>                    {
>>>>                            if(str[k]<str[min])
>>>>                            min=k;
>>>>                            }
>>>>                    swap(str[min],str[l],t);
>>>>                    }
>>>> }
>>>>     cout<<str;
>>>>
>>>>
>>>>  getch();
>>>> }
>>>>
>>>>
>>>> correct me..if m wrong..
>>>>
>>>>
>>>> On Thu, Sep 22, 2011 at 2:01 PM, Ratan <success.rata...@gmail.com>wrote:
>>>>
>>>>> @dheeraj ... ya u r ryt.... thnxs for the correction
>>>>>
>>>>> On Thu, Sep 22, 2011 at 1:30 PM, Dheeraj Sharma
>>>>> <dheerajsharma1...@gmail.com> wrote:
>>>>> > @Ratan:
>>>>> > i think the next largest here would be 784559
>>>>> >
>>>>> > On Thu, Sep 22, 2011 at 12:39 PM, Ratan <success.rata...@gmail.com>
>>>>> wrote:
>>>>> >>
>>>>> >> @kartik : to some extent ur code is giving the right answer... btw
>>>>> >> somehow check tis
>>>>> >> let for example the no be 759854
>>>>> >> then the next biggest no is 794558
>>>>> >> btw ur program is giving 795854 which is undoubtedly
>>>>> wrong............
>>>>> >> the code would give more appropriate result if u sort the numbers
>>>>> from
>>>>> >> from i to n on meeting the condition of (a[i-1]<a[i])
>>>>> >>
>>>>> >> On Thu, Sep 22, 2011 at 11:53 AM, Ramakant Sharma <
>>>>> ramakant...@gmail.com>
>>>>> >> wrote:
>>>>> >> > starting from right find first digit less then right most digit,if
>>>>> no
>>>>> >> > any
>>>>> >> > digit is less,then move to next right most and compair ,,,,when
>>>>> found
>>>>> >> > exchange those no,
>>>>> >> > now sort the no.s up to that index of the given no which is
>>>>> exchanged:
>>>>> >> > Ex:
>>>>> >> > 43987723893239876
>>>>> >> > first required sequence: 439877238932[3]987[6] swap these no
>>>>> >> > 439877238932[6]{987[3]}
>>>>> >> > now sort in decreasing order  439877238932[6]{3789} this is the
>>>>> required
>>>>> >> > no
>>>>> >> > ....correct me if any thing wrong
>>>>> >> >
>>>>> >> >
>>>>> >> >
>>>>> >> >
>>>>> >> >
>>>>> >> > --
>>>>> >> > 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.
>>>>> >> >
>>>>> >>
>>>>> >>
>>>>> >>
>>>>> >> --
>>>>> >> Ratan Kumar
>>>>> >> B. Tech
>>>>> >> MNNIT,
>>>>> >> Allahabad
>>>>> >>
>>>>> >> --
>>>>> >> 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.
>>>>> >>
>>>>> >
>>>>> >
>>>>> >
>>>>> > --
>>>>> > Dheeraj Sharma
>>>>> > Comp Engg.
>>>>> > NIT Kurukshetra
>>>>> >
>>>>> >
>>>>> > --
>>>>> > 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.
>>>>> >
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Ratan Kumar
>>>>> B. Tech
>>>>> MNNIT,
>>>>> Allahabad
>>>>>
>>>>> --
>>>>> 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.
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> *Dheeraj Sharma*
>>>> Comp Engg.
>>>> NIT Kurukshetra
>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> *Dheeraj Sharma*
>>> Comp Engg.
>>> NIT Kurukshetra
>>>
>>>
>>>  --
>>> 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