Sum of Subsets Using Back Viva
Sum of Subsets Using Back Viva
#include<stdio.h>
#include<conio.h>
int w[25];
void sos(s,k,r,m)
{
int i;
static int x[25];
x[k]=1;
if(s+w[k]==m)
{
printf("\n\n\t THE SUBSET ");
printf(" { ");
for(i=1;i<=k;i++)
{
printf("%d ",x[i]);
}
printf(" } ");
}
else
if((s+w[k]+w[k+1])<=m)
{
sos(s+w[k],k+1,r-w[k],m);
}
if(((s+r-w[k])>=m)&&(s+w[k+1])<=m)
{
x[k]=0;
sos(s,k+1,r-w[k],m);
}
}
void main()
{
int i,j,sm,n,sum=0,r,max,temp;
clrscr();
printf(" } ");
printf("\n\n SUBSET FORMED WITH AS %d ",sm);
sos(0,1,sum,sm);
}
getch();
}
OUTPUT: