hello all... anwer to previous example would be "5436827" instead of
"5436872"please correct it :)

On Sun, Dec 16, 2012 at 11:48 PM, marti <[email protected]> wrote:

> Here is what you do
>
> EG: 5436782
>
> ans is 5436872
>
> how did we arrive?
>
> FInd least index i, such that a[i-1] >= a[i] starting from rigthmost
> 5436782
>           (8)
> Now , Find least index j such that a[j-1] <= a[i-1]:
>
> 5436782
>    (7)
>
> swap them
>
> => 5436872
>
> Now swap all values between i and j.
>
> Pseudocode in Python:
>
> *def get_next(a):*
> *    N = len(a)*
> *    i = len(a)-1*
> *
> *
> *    while a[i-1] >= a[i]:*
> *        i -= 1*
> *
> *
> *    j = N*
> *
> *
> *    while a[j-1] <= a[i-1]:*
> *        j -= 1*
> *
> *
> *    a[i-1], a[j-1] = a[j-1], a[i-1]*
> *
> *
> *    i += 1*
> *    j = N*
> *
> *
> *    while i < j:*
> *        a[i-1], a[j-1] = a[j-1], a[i-1]*
> *        i+=1*
> *        j-=1*
> *
> *
> *    return a*
>
>
> Source:
> http://nicolas-lara.blogspot.in/2009/01/permutations.html
>
>
> On Friday, December 14, 2012 11:56:16 AM UTC+5:30, tapan rathi wrote:
>>
>> For a given number, find the next greatest number which is just greater
>> than previous one and made up of same digits.
>
>  --
>
>
>



-- 
Regards,
SHUBHAM SANDEEP
IT 3rd yr.
NIT ALD.

-- 


Reply via email to