Sum Of Subsets

SOURCE CODE:
#include<stdio.h>
int s[20],d,x[20],count=0;//x[n] acts as selected number for present interation
void subset(int ks,int k,int total){
int i,wk;
x[k]=1;
if(ks+s[k]==d){
printf("\nsubset %d \n",++count);
for(i=0;i<=k;i++)
if(x[i]==1)
printf("%d\t",s[i]);
}
else if(ks+s[k]+s[k+1] <= d)
subset(ks+s[k],k+1,total-s[k]);
if(ks+total-s[k] >= d && ks+s[k] <= d){
x[k]=0;
subset(ks,k+1,total-s[k]);
}
/* if(count == 0)
printf("NO SOLUTION\n");*/
}
int main(){
int n,i,sum=0;
printf("Enter # of integers :\n");
scanf("%d",&n);
printf("Enter elements in ascending order :\n");
for(i=0;i<n;i++){
scanf("%d",&s[i]);
sum+=s[i];
}
printf("Enter the value of d :\n");
scanf("%d",&d);
if(sum < d){
printf("NO SOLUTION\n");
return 0;
}
else
subset(0,0,sum);
if(count == 0)
printf("NO SOLUTION\n");
return 0;

}
OUTPUT:
Enter # of integers :
5
Enter elements in ascending order :
1
2
5
6
8
Enter the value of d :
9

subset 1
1       2       6
subset 2

1       8

Comments