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

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

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

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

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

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

  • बाएं से दाएं पार करें, फिर एलटीओआर भरें, और दिए गए सरणी की पिछली रेटिंग देखकर इसे अपडेट करें। हम दिए गए सरणी की अगली रेटिंग की परवाह नहीं कर रहे हैं
  • दाएं से बाएं ट्रैवर्स करें, फिर 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. सी++ में एक पेड़ में सभी सेबों को इकट्ठा करने का न्यूनतम समय

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

  1. C++ में दी गई बाधाओं के साथ सभी कार्यों को पूरा करने के लिए न्यूनतम समय खोजें

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

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

    मान लीजिए कि हमारे पास निम्नलिखित प्रवाह नेटवर्क है। जैसा कि हम जानते हैं कि एस-टी कट एक कट है जिसके लिए स्रोत के नोड और सिंक टी नोड को अलग-अलग सबसेट में होना आवश्यक है, और इसमें स्रोत सेट से सिंक की तरफ जाने वाले किनारे शामिल हैं। यहां एक एस-टी कट की क्षमता को कट-सेट में प्रत्येक किनारे की क्षमता क