Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- void combinationUtil(int arr[], int data[], int start, int end,
- int index, int r)
- {
- // Current combination is ready to be printed, print it
- if (index == r)
- {
- int w = 0;
- int j = 0;
- while ( j<r ) {
- printf("%d", data[j]);
- j++;
- }
- printf("\n");
- return;
- }
- // replace index with all possible elements. The condition
- // "end-i+1 >= r-index" makes sure that including one element
- // at index will make a combination with remaining elements
- // at remaining positions
- for (int i=start; i<=end && end-i+1 >= r-index; i++)
- {
- data[index] = arr[i];
- combinationUtil(arr, data, i+1, end, index+1, r);
- }
- }
- void printCombination(int arr[], int n, int r)
- {
- // A temporary array to store all combination one by one
- int data[r];
- // Print all combination using temprary array 'data[]'
- combinationUtil(arr, data, 0, n-1, 0, r); }
- /* arr[] ---> Input Array
- data[] ---> Temporary array to store current combination
- start & end ---> Staring and Ending indexes in arr[]
- index ---> Current index in data[]
- r ---> Size of a combination to be printed */
- // Driver program to test above functions
- int main()
- {
- int arr[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
- int r = 2;
- int n = (&arr)[1] - arr;
- printCombination(arr, n, r);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement