কম্পিউটার টিউটোরিয়াল

রড কাটিং সমস্যা: বিভিন্ন দৈর্ঘ্যের রড কাটে সর্বোচ্চ লাভ বের করা C++-এ


একটি রডের দৈর্ঘ্য 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

আউটপুট: সর্বোচ্চ লাভ: ২২

ব্যাখ্যা: দৈর্ঘ্য ২ এবং ৬-এ কাটলে লাভ ৫+১৭=২২।

C++ কোড উদাহরণ
#include 
using 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
  1. C++ প্রোগ্রাম: টিম সদস্যের সূচক সিকোয়েন্স বের করা (বিচ্ছিন্ন রেটিং)েন

  2. C++ প্রোগ্রাম: খেলার মাধ্যমে সর্বোচ্চ ভাতা পরিমাণ খুঁজে বের করা

  3. C++ প্রোগ্রাম: গম্ভীর পথ অনুসরণ করে গম ভেঙে সর্বোচ্চ লাভ গণনা

  4. C++ প্রোগ্রাম: গ্রাফে সুপার ভেরটেক্স চিহ্নিতকরণ