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

सभी किताबें खरीदने के लिए न्यूनतम लागत खोजें C++ में

मान लीजिए हमारे पास n तत्वों का एक ऐरे है। ये उनकी रेटिंग हैं। निम्नलिखित शर्त के साथ सभी किताबें खरीदने के लिए न्यूनतम लागत खोजें -

  • प्रत्येक किताब की लागत कम से कम 1 डॉलर होगी
  • एक किताब की लागत आसन्न (बाएं या दाएं) से अधिक होगी यदि रेटिंग आसन्न से अधिक है।

तो उदाहरण के लिए, यदि रेटिंग ऐरे [1, 3, 4, 3, 7, 1] जैसा है, तो आउटपुट 10 है, जैसे 1 + 2 + 3 + 1 + 2 + 1 = 10

इसे हल करने के लिए, हमें LtoR, और RtoL नामक दो ऐरे बनाने होंगे, और उन्हें 1 से भरना होगा, अब इन चरणों का पालन करें -

  • बाएं से दाएं पार करें, फिर LtoR भरें, और दिए गए ऐरे की पिछली रेटिंग को देखकर इसे अपडेट करें। हम दिए गए ऐरे की अगली रेटिंग की परवाह नहीं कर रहे हैं
  • दाएं से बाएं पार करें, फिर RtoL भरें, और दिए गए ऐरे की पिछली रेटिंग को देखकर इसे अपडेट करें। हम दिए गए ऐरे की अगली रेटिंग की परवाह नहीं कर रहे हैं
  • दोनों ऐरे LtoR और RtoL में ith स्थिति के अधिकतम मान के लिए, फिर इसे परिणाम में जोड़ें।

उदाहरण

#include <iostream>
using namespace std;

int getMinCost(int ratings[], int n) {
    int res = 0;
    int LtoR[n];
    int RtoL[n];
    for (int i = 0; i < n; i++) {
        LtoR[i] = RtoL[i] = 1;
    }
    for (int i = 1; i < n; i++)
        if (ratings[i] > ratings[i - 1])
            LtoR[i] = LtoR[i - 1] + 1;
    for (int i = n - 2; i >= 0; i--)
        if (ratings[i] > ratings[i + 1])
            RtoL[i] = RtoL[i + 1] + 1;
    for (int i = 0; i < n; i++)
        res += max(LtoR[i], RtoL[i]);
    return res;
}

int main() {
    int ratings[] = { 1, 6, 8, 3, 4, 1, 5, 7 };
    int n = sizeof(ratings) / sizeof(ratings[0]);
    cout << "Minimum cost is: " << getMinCost(ratings, n);
}

आउटपुट

Minimum cost is: 15

  1. C++ में ट्री में सभी सेब इकट्ठा करने का न्यूनतम समय C++ में ट्री में सभी सेब इकट्ठा करने का न्यूनतम समय

    मान लीजिए हमारे पास n वर्टेक्स वाला एक अनडायरेक्टेड ट्री है जो 0 से n-1 तक नंबर किए गए हैं, जिनके वर्टेक्स में कुछ सेब हैं। हम ट्री के एक एज पर चलने में 1 सेकंड खर्च करते हैं। हमें वर्टेक्स 0 से शुरू करके ट्री में सभी सेब इकट्ठा करने और इस वर्टेक्स पर वापस आने में खर्च होने वाले न्यूनतम समय (सेकंड म

  1. - C++ में दिए गए प्रतिबंधों के साथ सभी नौकरियों को पूरा करने का न्यूनतम समय ढूंढना

    अवधारणा दिए गए विभिन्न समय आवश्यकताओं वाली नौकरियों की सरणी के संबंध में, k समान असाइनी उपलब्ध हैं और हमें यह भी दिया गया है कि एक असाइनी को नौकरी की एक इकाई करने में कितना समय लगता है। हमारा कार्य निम्नलिखित प्रतिबंधों के साथ सभी नौकरियों को पूरा करने का न्यूनतम समय निर्धारित करना है। पहला प्रतिब

  1. C++ में फ्लो नेटवर्क में न्यूनतम s-t कट ढूंढना C++ में फ्लो नेटवर्क में न्यूनतम s-t कट ढूंढना

    मान लीजिए हमारे पास निम्नलिखित फ्लो नेटवर्क है। जैसा कि हम जानते हैं एक s-t कट एक ऐसा कट है जिसमें स्रोत s नोड और सिंक t नोड को अलग-अलग उपसमुच्चय में होना आवश्यक है, और इसमें स्रोत सेट से सिंक साइड की ओर जाने वाले किनारे शामिल हैं। यहां s-t कट की क्षमता कट-सेट में प्रत्येक किनारे की क्षमता के योग द