Write a program to implement the backtracking algorithm for the sum of subsets problem

#include <stdio.h>
#include <conio.h>

int arr[20], x[20], n, target;

void sumOfSubsets(int s, int k, int r) {
    int i;
    x[k] = 1; 
    if (s + arr[k] == target) {
        printf("{ ");
        for (i = 0; i <= k; i++)
            if (x[i] == 1)
                printf("%d ", arr[i]);
        printf("}\n");
    }
    else if (s + arr[k] + arr[k+1] <= target)
        sumOfSubsets(s + arr[k], k + 1, r - arr[k]);
    if ( (s + r - arr[k] >= target) && (s + arr[k+1] <= target) ) {
        x[k] = 0; 
        sumOfSubsets(s, k + 1, r - arr[k]);
    }
}
void main() {
    int i, r = 0;
    clrscr();
    printf("Enter number of elements: ");
    scanf("%d", &n);
    printf("Enter the elements (sorted): ");
    for (i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
        r += arr[i];
    }
    printf("Enter target sum: ");
    scanf("%d", &target);
    printf("\nSubsets with sum = %d:\n", target);
    sumOfSubsets(0, 0, r);
    getch();
}