i got a bag which can take "n" kilograms inside of him

and i have a list of items in which each item has a different weight.

i need to calculate a combination for which it will fill the bag as much as it could

without passing the n kilograms mark.

i got a function which calculates if amongnt the array we have a combination

which sum equals n (S=n)

how to change it so it will calculate a combination for which it will fill the bag as much as it could

without passing the n kilograms mark. S<=n

??

Code:#include <stdio.h> void printArr(int arr[], int n) { int i ; puts(""); for (i=0; i<n; i++) printf (" %d",arr[i]); puts(""); } int SubsetSum(int arr[], int n, int S, int subseq[],int count) { int withCurrent, withoutCurrent; if (S==0) { printArr(subseq,count); return 1; } if (S< 0 || !n) return 0; subseq[count] = arr[0]; withCurrent = SubsetSum(arr+1,n-1,S-arr[0],subseq, count+1); withoutCurrent= SubsetSum(arr+1,n-1,S,subseq,count); return (withoutCurrent || withCurrent); } void main() { int arr[] = {7, 6, 5,1,7,13,17}, subseq[8]; int S = 14,arrSize = 7; if (!SubsetSum(arr,arrSize,S,subseq,0)) printf("\nThere is no subsequence\n"); }