The following will generate an output like this - 0
0 1
0 1 2
0 1 2 3
0 1 3
0 2 3
0 3
1
1 2
1 2 3
1 3
2
2 3
3

using these indices you can generate from any given set.

    class SetGenerator

    {

    public:

        SetGenerator(size_t length)

            : LENGTH(length)

        {   indices.reserve(length);    }



        const vector<size_t>& generate_set()

        {

            if ( indices.empty() )

                indices.push_back(0);

            else if ( (LENGTH - 1) == indices[0])

            {

                indices.clear();

            }

            else

            {

                if ( LENGTH != (indices.back() + 1) )

                {

                    indices.push_back(indices.back() + 1);

                }

                else

                {

                    if ( (LENGTH-1) == ++indices.at(indices.size() - 2) || 2
== indices.size() )

                        indices.pop_back();

                }

            }



            return indices;

        }



    private:

        const size_t    LENGTH;

        vector<size_t>  indices;

    };
...

    SetGenerator gen(5);

    do

    {

        const vector<size_t> & idxs = gen.generate_set();

        if ( idxs.empty() )

            break;

        copy(idxs.begin(), idxs.end(), ostream_iterator<size_t>(cout, " "));

        cout<<'\n';

    } while( true );


On Wed, Aug 26, 2009 at 12:20 PM, AKS <abhijeet.k.s...@gmail.com> wrote:

>
> Hello fellas,
>
> i am lookin for an algorithm to find all the possible subsets in a
> given set
>
> So, if the Set is say, A={a,b,c} omit the null set
>
> o/p: ---   {a}  {b}  {c}  {a,b}  {b,c}   {a,c}   {a,b,c}  omit the
> null set
>
> regards,
> Abhijeet
> >
>


-- 
Yesterday is History.
Tomorrow is a Mystery.
Today is a Gift! That is why it is called the Present :).

http://sites.google.com/site/ramaswamyr

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to