Code :
# include <stdio.h>
void find3Numbers(int A[], int arr_size, int sum)
{
int l, r;
for (int i = 0; i
< arr_size-2; i++){
for (int j =
i+1; j < arr_size-1; j++){
for (int k
= j+1; k < arr_size; k++){
if
(A[i] + A[j] + A[k] <= sum)
printf("Triplet is %d, %d, %d\n", A[i], A[j], A[k]);
}
}
}
}
int main()
{
int A[] = {1, 2,
3, 4, 6};
int sum = 8;
int arr_size =
sizeof(A)/sizeof(A[0]);
find3Numbers(A,
arr_size, sum);
return 0;
}
Output :
Triplet is 1, 2, 3
Triplet is 1, 2, 4
Triplet is 1, 3, 4
Execution :
arr_size = 5
Step:1 i=0 and i<3
(arr_size-2)
j=1
and j<4 (arr_size-1)
k=2
and k<5 (arr_size)
A[0]+A[1]+A[2]<=sum --> 1+2+3 <=8 --> 6<=8
( true )
k=3
and k<5
A[0]+A[1]+A[3]<=sum --> 1+2+4 <=8 --> 7<=8
( true )
k=4
and k<5
A[0]+A[1]+A[4]<=sum --> 1+2+6 <=8 --> 9<=8 (
false )
j=2
and j<4
k=3
and k<5
A[0]+A[2]+A[3]<=sum --> 1+3+4 <=8 --> 8<=8
( true )
k=4
and k<5
A[0]+A[2]+A[4]<=sum --> 1+3+6 <=8 --> 10<=8 (
false )
j=3
and j<4
k=4 and k<5
A[0]+A[3]+A[4]<=sum --> 1+4+6 <=8 --> 11<=8 (
false )
j=4
and j<4 (false)
Step:2 i=1 and i<3
j=2
and j<4
k=3
and k<5
A[1]+A[2]+A[3]<=sum --> 2+3+4 <=8 --> 9<=8 (
false )
k=4
and k<5
A[1]+A[2]+A[4]<=sum --> 2+3+6 <=8 --> 11<=8 (
false )
j=3
and j<4
k=4 and k<5
A[1]+A[3]+A[4]<=sum --> 2+4+6 <=8 --> 12<=8 (
false )
j=4
and j<4 (false)
Step:3 i=2 and i<3
j=3
and j<4
k=4 and k<5
A[2]+A[3]+A[4]<=sum --> 3+4+6 <=8 --> 13<=8 (
false )
j=4
and j<4 (false)
Step:4 i=3 and i<3 (false)