Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में अलग-अलग लंबाई की छड़ को काटकर अधिकतम लाभ प्राप्त करने का कार्यक्रम

मान लीजिए कि हमारे पास एक छड़ है जिसकी लंबाई n है। हमारे पास एक सूची भी है, जिसमें प्रत्येक आकार के लिए अलग-अलग आकार और मूल्य शामिल हैं। हमें छड़ को काटकर बाजार में बेचकर अधिकतम मूल्य ज्ञात करना होता है। विभिन्न पदों पर कटौती करके और रॉड काटने के बाद कीमतों की तुलना करके सर्वोत्तम मूल्य प्राप्त करने के लिए।

इसलिए, यदि इनपुट कीमतों की तरह है =[1, 5, 8, 9, 10, 17, 17, 20], n =8, तो आउटपुट 22 होगा, जैसे कि रॉड को लंबाई 2 और 6 में काटने से। लाभ 5 + 17 =22 है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • आकार के सरणी लाभ को परिभाषित करें:n+1.

  • लाभ [0] :=0

  • इनिशियलाइज़ i :=1 के लिए, जब i <=n, अपडेट करें (i को 1 से बढ़ाएँ), करें -

    • maxProfit :=ऋणात्मक अनंत

    • इनिशियलाइज़ j :=0 के लिए, जब j

      • maxProfit :=अधिकतम लाभ और कीमत का अधिकतम[j] + लाभ[i − j − 1]

    • लाभ [i] :=अधिकतम लाभ

  • अधिकतम लाभ लौटाएं

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#include <bits/stdc++.h>
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;
   int maxProfit;
   for (int i = 1; i<=n; i++) {
      maxProfit = INT_MIN;
      for (int j = 0; j < i; j++)
      maxProfit = max(maxProfit, price[j] + profit[i-j-1]);
      profit[i] = maxProfit;
   }
   return maxProfit;
}
int main() {
   int priceList[] = {1, 5, 8, 9, 10, 17, 17, 20};
   int rodLength = 8;
   cout << rodCutting(priceList, rodLength);
}

इनपुट

{1, 5, 8, 9, 10, 17, 17, 20}, 8

आउटपुट

22

  1. खेल खेलने के बाद अधिकतम संभव भत्ता खोजने के लिए C++ प्रोग्राम

    मान लीजिए कि हमारे पास तीन नंबर ए, बी और सी हैं। एक गेम पर विचार करें:तीन पूर्णांक पैनल हैं, प्रत्येक पर एक अंक के रूप में 1 से 9 (दोनों शामिल) मुद्रित हैं, और एक ऑपरेटर पैनल + के साथ है। उस पर मुद्रित हस्ताक्षर। खिलाड़ी को चार पैनलों को बाएं से दाएं व्यवस्थित करके फॉर्म एक्स + वाई का सूत्र बनाना चा

  1. C++ प्रोग्राम गेहूँ बेचने से प्राप्त होने वाले लाभ की अधिकतम राशि का पता लगाने के लिए

    मान लीजिए, ऐसे कई शहर हैं जो m सड़कों से जुड़े हैं। सड़कें यूनिडायरेक्शनल हैं, सड़कें केवल स्रोत से गंतव्य तक जा सकती हैं, विपरीत नहीं। सड़कों को सरणी सड़कों में प्रारूप {स्रोत, गंतव्य} में दिया गया है। अब शहरों में गेहूं अलग-अलग दामों पर बिकता है। शहरों में गेहूं की कीमत एक सरणी कीमत में दी जाती है

  1. C++ प्रोग्राम ग्राफ में सुपर वर्टिस का पता लगाने के लिए

    मान लीजिए, हमें एक ग्राफ दिया गया है जिसमें n शीर्ष हैं। कोने 1 से n तक गिने जाते हैं, और वे सरणी किनारों में दिए गए किनारों से जुड़े होते हैं। प्रत्येक शीर्ष का 1 से n तक की संख्या के भीतर x मान होता है जो कि सरणी मान में दिया जाता है। अब, हमें ग्राफ से अति शीर्षों का पता लगाना है। एक शीर्ष i को सु