একটি রডের দৈর্ঘ্য n এবং প্রতিটি দৈর্ঘ্যের জন্য মূল্য তালিকা দেওয়া আছে। লক্ষ্য হল রড কাটে ব أجزاء বেচে সর্বোচ্চ লাভ বের করা। ডাইনামিক প্রোগ্রামিং দিয়ে সমাধান।
profit[i] = দৈর্ঘ্য i রডের জন্য সর্বোচ্চ লাভ। profit[i] = max(price[j] + profit[i-j-1]) for j=0 to i-1।
ইনপুট: prices = [1,5,8,9,10,17,17,20], n=8
আউটপুট: সর্বোচ্চ লাভ: ২২
ব্যাখ্যা: দৈর্ঘ্য ২ এবং ৬-এ কাটলে লাভ ৫+১৭=২২।
#includeusing namespace std; int max(int a, int b) { return (a > b) ? a : b; } int rodCutting(int price[], int n) { int profit[n+1]; profit[0] = 0; for (int i = 1; i <= n; i++) { int maxProfit = INT_MIN; for (int j = 0; j < i; j++) maxProfit = max(maxProfit, price[j] + profit[i-j-1]); profit[i] = maxProfit; } return profit[n]; } int main() { int priceList[] = {1, 5, 8, 9, 10, 17, 17, 20}; int rodLength = 8; cout << rodCutting(priceList, rodLength); return 0; }
উপরোক্ত কোড রান করলে আউটপুট:
22