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

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


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

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

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

  • आकार n+1 का एक सरणी profit परिभाषित करें।

  • profit[0] := 0

  • i := 1 से आरंभ करें, जब i <= n, अपडेट करें (i को 1 से बढ़ाएं), करें -

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

    • j := 0 से आरंभ करें, जब j < i, अपडेट करें (j को 1 से बढ़ाएं), करें -

      • maxProfit := maxProfit और price[j] + profit[i - j - 1] का अधिकतम

    • profit[i] := maxProfit

  • maxProfit लौटाएं

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

उदाहरण

#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++ प्रोग्राम

    मान लीजिए हमारे पास तीन संख्याएं A, B और C हैं। एक खेल पर विचार करें: तीन इंटीजर पैनल हैं, जिनमें से प्रत्येक पर 1 से 9 (दोनों समावेशी) तक का एक अंक छपा हुआ है, और एक ऑपरेटर पैनल है जिस पर + चिह्न छपा हुआ है। खिलाड़ी को चार पैनलों को बाएं से दाएं व्यवस्थित करके X+Y रूप का एक सूत्र बनाना चाहिए। फिर,

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

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

  1. ग्राफ में सुपर वर्टेक्स खोजने का C++ प्रोग्राम ग्राफ में सुपर वर्टेक्स खोजने का C++ प्रोग्राम

    मान लीजिए n वर्टेक्स वाला एक ग्राफ दिया गया है। वर्टेक्स 1 से n तक संख्याबद्ध हैं और edges सरणी में दी गई एज्स से जुड़े हैं। प्रत्येक वर्टेक्स का एक x मान है जो 1 से n के बीच होता है, यह values सरणी में दिया गया है। हमें ग्राफ में सुपर वर्टेक्स खोजने हैं। एक वर्टेक्स i को सुपर वर्टेक्स कहा जाता है