#include
using namespace std;
void swap(int &a,int &b)
{
int temp=a;
a=b;
b=temp;
}
void perm(int a[],int b,int end)
{
if(b>=end)
{
for(int i=0;i<end;i++)
cout<<a[i]<<” “;
cout<<endl;
return;
}
for(int i=b;i<end;i++)
{
swap(a[b],a[i]);
perm(a,b+1,end);
swap(a[b],a[i]);
}
}
void comb(int a[],int n,int k)
{
bool *temp=new bool[n];
for(int i=0;i<n;i++)
{
if(i<k)
temp[i]=1;
else
temp[i]=0;
}
for(int i=0;i<n;i++)
{
if(temp[i]==1)
cout<<a[i]<<” “;
}
cout<<endl;
int flag=1;
for(int j=n-k;j<n;j++)
flag*=temp[j];
while(!flag)
{
int count=0;
for(int i=0;i<n-1;i++)
{
if(temp[i]==1)
count++;
if(temp[i]==1 && temp[i+1]==0)
{
temp[i]=0;
temp[i+1]=1;
count–;
for(int j=0;j<i;j++)
{
if(j<count)
temp[j]=1;
else
temp[j]=0;
}
break;
}
}
for(int i=0;i<n;i++)
{
if(temp[i]==1)
cout<<a[i]<<” “;
}
cout<<endl;
flag=1;
for(int j=n-k;j<n;j++)
flag*=temp[j];
}
delete [] temp;
}
void main()
{
int array[5]={1,2,3,4,5};
comb(array,5,3);
}