#include
using namespace std;
void combinationUtil(int arr[], int n, int r,
int index, int data[], int i);
void printCombination(int arr[], int n, int r)
{
int data[r];
combinationUtil(arr, n, r, 0, data, 0);
}
void combinationUtil(int arr[], int n, int r, int index,
int data[], int i)
{
if (index == r) {
for (int j = 0; j < r; j++)
cout<<data[j]<<" ";
cout<<endl;
return;
}
if (i >= n)
return;
data[index] = arr[i];
combinationUtil(arr, n, r, index + 1, data, i + 1);
combinationUtil(arr, n, r, index, data, i + 1);
}
int main()
{ int n=5;
int arr[n]={1,2,3,4,5};
int k=3;
printCombination(arr, n, k);
return 0;
}
This is the code to print all possible subsets of length k. I didn’t understand the part how the function returns to the part where it prints the subset 134 after printing the subset 125. Please explain.