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

C++ में एकाधिक योगों के साथ लक्ष्य सरणी का निर्माण

मान लीजिए हमारे पास लक्ष्य नामक एक पूर्णांक सरणी है। सभी 1 की सरणी A से शुरू करके, हम निम्नलिखित प्रक्रिया कर सकते हैं:

  • x को सरणी में वर्तमान में सभी तत्वों का योग मानें।

  • इंडेक्स i चुनें, 0 से n की सीमा में, जहां n सरणी का आकार है और A में इंडेक्स i पर मान को x पर सेट करें।

  • हम इस प्रक्रिया को जितनी बार चाहें दोहरा सकते हैं।

हमें जांचना है कि क्या A से लक्ष्य सरणी बनाना संभव है, अन्यथा False लौटाएं।

यदि इनपुट [3,9,5] है, तो आउटपुट True होगा, क्योंकि हम [1,1,1] से शुरू कर सकते हैं, फिर योग 3 इंडेक्स 0 पर, सरणी [3,1,1], फिर योग 5 इंडेक्स 2 पर, सरणी [3,1,5], फिर योग 9 इंडेक्स 1 पर, सरणी [3,9,5]।

हल करने के चरण

  • sum := 0, n := target का आकार

  • target के सभी तत्वों का योग निकालें

  • प्राथमिकता कतार pq को target सरणी से आरंभ करें

  • जब तक pq का शीर्ष तत्व > sum/2 है: x := शीर्ष तत्व, इसे हटाएं, 2*x - sum डालें, sum := x

  • यदि sum, target के आकार के बराबर है तो true लौटाएं, अन्यथा false

उदाहरण

#include <bits/stdc++.h> 
using namespace std; 
typedef long long int lli; 

class Solution { 
public: 
    bool isPossible(vector<int>& target) { 
        lli sum = 0; 
        int n = target.size(); 
        for (int i = 0; i < n; i++) { 
            sum += target[i]; 
        } 
        priority_queue<int> pq(target.begin(), target.end()); 
        while (pq.top() * 2 > sum) { 
            int x = pq.top(); 
            pq.pop(); 
            pq.push(2 * x - sum); 
            sum = x; 
        } 
        return sum == (int)target.size(); 
    } 
}; 

int main() { 
    Solution ob; 
    vector<int> v = {3,9,5}; 
    cout << (ob.isPossible(v)); 
    return 0; 
}

इनपुट

{3,9,5}

आउटपुट

1
  1. - C++ में निरपेक्ष अंतर के न्यूनतम योग वाला एरे तत्व

    यह प्रोग्राम दिए गए एरे के न्यूनतम निरपेक्ष अंतर को खोजने के लिए है जहां हमारे पास एक एरे है जिसमें विशिष्ट तत्व हैं। इस अवधारणा को बेहतर ढंग से सीखने के लिए, आइए आवश्यक चीजों को दोहराएं: एरे (Array) समान डेटा प्रकार के तत्वों का एक कंटेनर है। एरे की लंबाई पूर्वनिर्धारित होनी चाहिए। निरपेक्ष अंतर (

  1. - C++ सम एरे पहेली (Sum Array Puzzle)

    एरे (Array) एक डेटा संरचना है जो समान डेटा प्रकार के कई तत्वों को संग्रहीत करती है। यह एक बार में मानों का पूरा सेट संग्रहीत कर सकता है। लेकिन इसकी लंबाई पहले से परिभाषित होनी चाहिए। इस सम एरे पहेली में, हमें एक निश्चित आकार का एरे A1 दिया जाता है, मान लीजिए n। इस पहेली को हल करने के लिए, हम S1 नाम

  1. - C++ में सम ऐरे पजल (बिना घटाव ऑपरेटर के)

    यहां हम ऐरे से संबंधित एक रोचक समस्या देखेंगे। n तत्वों वाला एक ऐरे है। हमें n तत्वों का एक और ऐरे बनाना है। लेकिन दूसरे ऐरे का i-th स्थान पहले ऐरे के i-th तत्व को छोड़कर सभी तत्वों का योग रखेगा। और एक प्रतिबंध है कि हम इस समस्या में घटाव ऑपरेटर का उपयोग नहीं कर सकते। यदि हम घटाव ऑपरेशन का उपयोग कर