JustPaste.it

#include<stdio.h>
#include<stdlib.h>
int w[10],x[10],d,n,i,sum=0;
int main()
{
    printf("Enter the number of elements\n");
    scanf("%d",&n);
    printf("Enter elements in increasing order\n");
    for(i=1;i<=n;i++)
    {
        scanf("%d",&w[i]);
        sum=sum+w[i];
    }
    printf("Enter the value of d\n");
    scanf("%d",&d);
    if(sum<=d||w[i]>d)
    {
        printf("No Solution");
        exit(0);
    }
    sum_subset(0,1,sum);
}
void sum_subset(int s,int k,int r)
{
    x[k]=1;
    if(s+w[k]==d)
    {
    printf("\nSubset\t");
    for(i=1;i<=k;i++)
    {
        if(x[i]==1)
        {
            printf("%d\t",w[i]);
        }
    }
    }
    else if(s+w[k]+w[k+1]<=d)
    {
        sum_subset(s+w[k],k+1,r-w[k]);
    }
    if((s+r-w[k]>=d)&&(s+w[k+1]<=d))
    {
        x[k]=0;
        sum_subset(s,k+1,r-w[k]);
    }
}