/* Driver program to test above functions */ int main() { int arr[] = {1, 5, 8, 9, 10, 17, 17, 20}; int size = sizeof(arr)/sizeof(arr[0]); printf("Maximum Obtainable Value is %d\n", cutRod(arr, size)); getchar(); return 0; }
int main() { int size = sizeof(arr)/sizeof(arr[0]); int r[size]; memset(r, -1, sizeof(arr)); printf("Maximum Obtainable Value is %d\n", cutRod(size, r)); return 0; }
int cutRod(int size){ if(size <= 0) return 0; int q = INT_MIN; for(int i=0;i<size;i++){ q = max(q, arr[i] + cutRod(size-i-1)); } return q; }
int cutRod(int price[], int n) { int i; if (n <= 0) return 0; int max_val = INT_MIN; for (i = 0; i<n; i++) max_val = max(max_val, price[i] + cutRod(price, n-i-1)); return max_val; }
int cutRod(int size, int r[]){ int q = INT_MIN; if(r[size]>=0) return r[size]; if(size == 0) q = 0; for(int i=0;i<size;i++){ q = max(q, arr[i] + cutRod(size-i-1, r)); } r[size] = q; return q; }
/* Returns the best obtainable price for a rod of length n and price[] as prices of different pieces */ int cutRod(int price[], int n) { if (n <= 0) return 0; int max_val = INT_MIN; // Recursively cut the rod in different pieces and compare different // configurations for (int i = 0; i<n; i++) max_val = max(max_val, price[i] + cutRod(price, n-i-1)); return max_val; }
int main() { int size, arr[50]; int i; printf("Enter Size of rod:"); scanf("%d",&size); printf("Enter the prices of the pieces:"); for(i=0;i<size;i++) scanf("%d",&arr[i]); printf("Maximum Obtainable Value is %d\n", cutRod(arr, size)); getchar(); return 0; }
void cutRod(int *price, int n, int * res) { if (n <= 0) { *res = 0; return; } int max_val = INT_MIN; int aux[n]; memset(aux, INT_MIN, n); int i; for(i = 0; i<n; i++) { cutRod(price, n-i-1, &aux[i]); } #pragma omp taskwait for(i = 0; i<n; i++) { max_val = max(max_val, price[i] + aux[i]); } *res = max_val; }
int main() { int size = sizeof(arr)/sizeof(arr[0]); printf("Maximum Obtainable Value is %d\n", cutRod(size)); return 0; }