{}
Learn DSA the way it should be — with step-by-step code visualization.
Try now!
Learn DSA with step-by-step code visualization.
Try now!
run-icon
main.c
#include <stdio.h> #include <stdlib.h> #include <time.h> int count_rec = 0, count_loop = 0; // Recursive Function to Generate Combinations void generateCombinationsRecursive(int arr[], int n, int r, int index, int k, int *subset) { if (k == r) { count_rec++; return; } for (int i = index; i < n; i++) { subset[k] = arr[i]; generateCombinationsRecursive(arr, n, r, i + 1, k + 1, subset); } } // Wrapper Function for Recursion void runRecursive(int arr[], int n, int r) { int *subset = (int *)malloc(r * sizeof(int)); generateCombinationsRecursive(arr, n, r, 0, 0, subset); free(subset); } // Brute Force (Loop-Based) Approach void runLoopBased(int arr[], int n) { for (int i = 0; i < n - 2; i++) { for (int j = i + 1; j < n - 1; j++) { for (int k = j + 1; k < n; k++) { count_loop++; } } } } // Main Function for Execution int main() { int arr[] = {1, 2, 3, 4, 12, 9, 5, 70}; // Example array int n = sizeof(arr) / sizeof(arr[0]); int r = 3; clock_t start, end; double time_rec, time_loop; // Measure Time for Recursive Approach start = clock(); runRecursive(arr, n, r); end = clock(); time_rec = ((double)(end - start)) / CLOCKS_PER_SEC; // Measure Time for Loop-Based Approach start = clock(); runLoopBased(arr, n); end = clock(); time_loop = ((double)(end - start)) / CLOCKS_PER_SEC; // Print Results printf("Number of Combinations (Recursive): %d\n", count_rec); printf("Execution Time (Recursive): %f seconds\n", time_rec); printf("Number of Combinations (Loop-Based): %d\n", count_loop); printf("Execution Time (Loop-Based): %f seconds\n", time_loop); return 0; }
Output