ui nextsmallest( ui n)
{
ui x;
int ctr=-1;
x= (n&~(n-1)); // the lowest bit set in 'n'
while( x&n) // finds the number of consecutive bits set from the
lowest one
{
x<<=1;
ctr++;
}
n^=x;
n&=(~(x-1));
n+=(1<<ctr)-1;
return n;
}
Better than the previous one.
--
Himanshu Sachdeva
--
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.