#include<stdio.h>
#include<math.h>

int set_bits(int a)
{
    int c=0;
    while(a)
    {
            if(a & 1)
            c++;
            a >>=1;
            }
return c;
}

void sub(int a[],int n,int k)
{
     int i; int x,c=0,j;
     x = pow(2,n);
     for(i=0;i<x;i++)  //this statement is exec 2^n times
     {
                     if(set_bits(i) == k)  // This is satisfied nCk times
                     {
                                c=0;
                                printf("{ ");
                                for(j=0;c<k;j++) /* this loop runs n times 
(no.of bits in 2^n - 1) */
                                if(i>>j & 1)
                                {
                                        printf("%d ",a[n-j-1]);
                                        c++;
                                        }
                                printf("}\n");
                     }
     }
                                     
 }
int main()
{
    
    int a[]= {1,2,3,4};
    int k=2,n=4;
    sub(a,n,k);
    
    getch();
}

Time Complexity is quite high. O(n(2^n))

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/algogeeks/-/jWHXwaHrTGEJ.
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