This is a program to store all possible combinations of given array in the array ans[][].
#include <stdio.h>
int ingredients = 10;
int ans[10][10];
int x = 0;
void makeCombination(int arr1[], int data[], int st, int end, int index, int r);
void CombinationDisplay(int arr1[], int n, int r) {
int data[r];
makeCombination(arr1, data, 0, n - 1, 0, r);
}
void makeCombination(int arr1[], int data[], int st, int end, int index, int r) {
if (index == r) {
for (int j = 0; j < r; j++)
ans[x][j] = data[j];
x++;
return;
}
for (int i = st; i <= end && end - i + 1 >= r - index; i++) {
data[index] = arr1[i];
makeCombination(arr1, data, i + 1, end, index + 1, r);
}
}
int main() {
int arr1[ingredients], i;
for (i = 0; i < ingredients; i++)
arr1[i] = i;
int n = sizeof(arr1) / sizeof(arr1[0]);
for (int r = 0; r < ingredients; r++)
CombinationDisplay(arr1, n, r);
for (i = 0; i < ingredients; i++) {
for (int j = 0; j < i; j++) {
printf("%d", ans[i][j]);
}
printf("\n");
}
return 0;
}
It should store all the combinations in an array ans and print it. However, it does not show any errors, nor output in the terminal.
int ingredients = 2;?