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

C++ में सुपर वॉशिंग मशीन्स समस्या


मान लीजिए हमारे पास एक पंक्ति में n सुपर वॉशिंग मशीनें हैं। प्रारंभ में, प्रत्येक वॉशिंग मशीन में कुछ कपड़े हैं या खाली है। अब, प्रत्येक चाल में, हम कोई भी m (1 ≤ m ≤ n) वॉशिंग मशीनें चुन सकते हैं, और प्रत्येक वॉशिंग मशीन का एक कपड़ा उसके आसन्न वॉशिंग मशीनों में से एक को एक साथ पास कर सकते हैं। मान लीजिए हमारे पास एक इंटीजर ऐरे है जो बाएं से दाएं पंक्ति में प्रत्येक वॉशिंग मशीन में कपड़ों की संख्या दर्शाता है, हमें सभी वॉशिंग मशीनों में समान संख्या में कपड़े बनाने के लिए न्यूनतम चालों की संख्या ढूंढनी है। यदि यह संभव नहीं है, तो -1 लौटाएं।

उदाहरण के लिए, जब इनपुट [1,0,5] है, तो आउटपुट 3 होगा: 5 से 0 को भेजें → [1,1,4], फिर मध्य से बाएं → [2,1,3], फिर 2 से 1 → [2,2,2]

समाधान दृष्टिकोण

  1. sum := v के सभी तत्वों का योग।
  2. n := v.size()।
  3. यदि sum % n != 0, तो -1 लौटाएं (संभव नहीं)।
  4. req := sum / n (प्रति मशीन आवश्यक कपड़े), ret := 0, extra := 0।
  5. i = 0 से n-1 तक लूप करें:
    • x := v[i]
    • extra += (x - req)
    • ret = max({ret, x - req, |extra|})
  6. ret लौटाएं।

अंतर्ज्ञान: ret किसी भी बिंदु पर आवश्यक अधिकतम असंतुलन को ट्रैक करता है: या तो एक मशीन का व्यक्तिगत अधिशेष/घाटा (x - req) या संचयी प्रवाह असंतुलन (|extra|)।

C++ कार्यान्वयन

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    int findMinMoves(vector<int>& v) {
        int sum = accumulate(v.begin(), v.end(), 0);
        int n = v.size();
        if (sum % n != 0) return -1;
        
        int req = sum / n;
        int ret = 0;
        int extra = 0;
        
        for (int i = 0; i < n; i++) {
            int x = v[i];
            extra += (x - req);
            ret = max({ret, x - req, abs(extra)});
        }
        return ret;
    }
};

int main() {
    Solution ob;
    vector<int> v = {2, 1, 6};
    cout << ob.findMinMoves(v);
    return 0;
}

इनपुट

{2,1,6}

आउटपुट

3
  1. - C++ Enum: एक पूर्ण गाइड

    C++ Enum का उपयोग कैसे करें: एक गाइड एक एन्यूमरेटेड टाइप एक उपयोगकर्ता-परिभाषित डेटा प्रकार है जिसे मानों की एक श्रृंखला से एक मान निर्दिष्ट किया जा सकता है। एनम का उपयोग अक्सर प्रोग्रामिंग में तब किया जाता है जब एक वेरिएबल को केवल मानों के एक विशिष्ट सेट में से एक मान स्टोर करने में सक्षम होना चाहि

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

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

  1. - लिनक्स पर C++ के लिए सर्वश्रेष्ठ IDE कौन सा है?

    बड़े प्रोजेक्ट्स को केवल टेक्स्ट एडिटर्स पर प्रबंधित करना मुश्किल होता है। ऐसे मामलों में IDE का उपयोग करने से आप अधिक उत्पादक और कम निराश होंगे। विभिन्न प्रकार के IDE उपलब्ध हैं और आपको अपनी आवश्यकताओं के अनुरूप सही चुनना चाहिए। लिनक्स पर C++ के लिए कोई एक सर्वश्रेष्ठ IDE नहीं है; आपको अपने टूल को