Saturday, July 17, 2010

Power Set



Printing all the
possible combinations of a set of elements



using System;



using
System.Collections;



using
System.Linq;



using
System.Text;



 



namespace
ConsoleApplication3



{



    class Program



    {



        static int count = 0;//Variable
which counts the number of combinations printed.



        static void Main(string[]
args)



        {



            ArrayList
list = new ArrayList();



            string
input = "abcde";



            char[]
arr = new char[input.Length];



            arr = input.ToCharArray();



            //int[]
arr = { 1, 2, 3, 4, 5 };



            combine(arr,list,0);



            Console.WriteLine("The total number of combinations is: "
+ count);



        }



        //Change
char[]arr to int[]arr to use the function for an int array.



        static void combine(char[]
arr, ArrayList list, int index)



        {



            if
(index == arr.Length)



            {



                return;



            }



            else



            {



                while
(index < arr.Length)



                {



                    list.Add(arr[index]);



                    //Printing
format



                    Console.Write("{");



                    for
(int i = 0; i < list.Count; i++)



                    {



                        if (i !=
list.Count - 1)



                        {



                            Console.Write(list[i] + ",");



                        }



                        else



                        {



                            Console.Write(list[i]);



                        }



                    }



                    Console.Write("}");



                    Console.WriteLine();



                    //Printing
format.



                    count++;



                    combine(arr, list, index +
1);



                    //Removing
the last element of the present list on returning.



                    list.RemoveAt(list.Count -
1);



                    index++;



                }



            }



        }



    }



}



1 comment: