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

C++ में स्टिक्स कनेक्ट करने की न्यूनतम लागत


मान लीजिए हमारे पास कुछ स्टिक्स हैं जिनकी लंबाई पॉजिटिव इंटीजर है। हम किन्हीं दो स्टिक्स को लंबाई X और Y की एक स्टिक में कनेक्ट कर सकते हैं, जिसकी लागत X + Y है। यह तब तक किया जाएगा जब तक एक स्टिक शेष न रह जाए। हमें इस तरह दिए गए सभी स्टिक्स को एक स्टिक में कनेक्ट करने की न्यूनतम लागत ढूंढनी है। यदि स्टैक [2,4,3] है, तो आउटपुट 14 होगा।

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

  • pq नामक एक मिन हीप प्रायोरिटी क्यू परिभाषित करें
  • s के सभी एलिमेंट्स को pq में डालें
  • ans := 0
  • जब तक pq में एक से अधिक एलिमेंट हैं
    • temp := क्यू का टॉप, pq से टॉप डिलीट करें
    • temp := temp + pq का टॉप एलिमेंट, और pq से डिलीट करें
    • ans := ans + temp
    • temp को pq में डालें
  • ans लौटाएं

उदाहरण (C++)

बेहतर समझ के लिए निम्नलिखित इम्प्लीमेंटेशन देखें -

#include <bits/stdc++.h> using namespace std; class Solution { public:    int connectSticks(vector<int>& s) {       priority_queue <int, vector<int>, greater<int> > pq;       for(int i =0;i<s.size();i++)pq.push(s[i]);       int ans = 0;       while(pq.size()>1){          int temp = pq.top();          pq.pop();          temp += pq.top();          pq.pop();          ans+=temp;          pq.push(temp);       }       return ans;    } }; main(){    vector<int> v = {2,4,3};    Solution ob;    cout <<ob.connectSticks(v); }

इनपुट

[2,4,3]

आउटपुट

14

  1. C++ में कार्टेशियन निर्देशांकों को जोड़ने की न्यूनतम लागत ज्ञात करने का प्रोग्राम C++ में कार्टेशियन निर्देशांकों को जोड़ने की न्यूनतम लागत ज्ञात करने का प्रोग्राम

    मान लीजिए हमारे पास 2D कार्टेशियन निर्देशांक बिंदुओं (x, y) की एक सूची है। हम (x0, y0) और (x1, y1) को जोड़ सकते हैं, जिसकी लागत |x0 - x1| + |y0 - y1| है। यदि हमें किसी भी संख्या में बिंदुओं को जोड़ने की अनुमति है, तो हमें वह न्यूनतम लागत ज्ञात करनी होगी जिससे हर बिंदु एक पथ से जुड़ा हो।उदाहरण के लिए

  1. C++ में बोर्ड को वर्गों में काटने की न्यूनतम लागत C++ में बोर्ड को वर्गों में काटने की न्यूनतम लागत

    अवधारणा मान लीजिए लंबाई p और चौड़ाई q का एक बोर्ड दिया गया है, हमें इस बोर्ड को p*q वर्गों में तोड़ना है ताकि तोड़ने की लागत न्यूनतम हो। इस बोर्ड के लिए, प्रत्येक किनारे के लिए काटने की लागत दी जाएगी। संक्षेप में, हमें काटने का ऐसा क्रम चुनना है जिससे लागत न्यूनतम हो। उदाहरण उपरोक्त बोर्ड को वर्गो

  1. C++ में जॉब शेड्यूल की न्यूनतम कठिनाई C++ में जॉब शेड्यूल की न्यूनतम कठिनाई

    मान लीजिए हम कार्यों की एक सूची को d दिनों में शेड्यूल करना चाहते हैं। कार्य निर्भर हैं इसलिए, i-वें कार्य पर काम करने के लिए, हमें उन सभी कार्यों j को पूरा करना होगा जहां 0 <= j < i। हमें प्रत्येक दिन कम से कम एक कार्य पूरा करना होगा। एक कार्य शेड्यूल की कठिनाई वास्तव में d दिनों में से प्रत्येक द