void partitionIncreasing(int value) { int arr[MAXLENGTH] = {0}; //Make array values all 0 printf("partitionIncreasing %d\n", value); partInc(value, arr, 0, 1); //Initial index is 0 and initial starting point is 1 }
void partitionIncreasing(int value) { int ind = 0; printf("partitionIncreasing %d\n", value); void partInc( int value, int * arr, int ind); int * arr = malloc(value * sizeof(int)); partInc(value, arr, ind); free(arr); }
void partInc(int value, int * arr, int ind, int start) { int i; if(value == 0) { printArray(arr, ind); return; } //Start at 1 initially since it is the lowest number for(i = start; i <= value; i++) { arr[ind] = i; partInc(value - i, arr, ind + 1, i + 1); } }
void partInc(int value, int * arr, int ind) { int n = 0; if (value == 0) { printpart(arr, ind); return; } for (n = 1; n <= value; n++) { arr[ind] = n; //if (ind == 0) //{ // partInc(value - n, arr, ind + 1); //} if ( arr[ind] > arr[ind - 1]) { arr[ind] = n; partInc(value - n, arr, ind + 1); } } }
void partitionIncreasing(int value) { int *result = malloc(sizeof(int) * (value / 2 + 2)); partInc(result, value); free(result); }