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

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

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

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

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

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

हमें यह जांचना होगा कि क्या ए से लक्ष्य सरणी बनाना संभव है अन्यथा झूठी वापसी करें।

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

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

  • योग :=0

  • n :=लक्ष्य का आकार

  • इनिशियलाइज़ i :=0 के लिए, जब i

    • योग :=योग + लक्ष्य[i]

  • प्राथमिकता कतार pq को परिभाषित करें, और इसे लक्ष्य सरणी के साथ प्रारंभ करें

  • जबकि pq का शीर्ष तत्व> योग, करें -

    • x :=pq का शीर्ष अवयव

    • pq से तत्व हटाएं

    • 2 * x डालें - pq में योग करें

    • योग :=x

  • जब योग लक्ष्य के आकार के समान हो, अन्यथा असत्य हो, तो सही लौटें

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#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();
   }
};
main(){
   Solution ob;
   vector<int> v = {3,9,5};
   cout << (ob.isPossible(v));
}

इनपुट

{3,9,5}

आउटपुट

1

  1. सी ++ में पूर्ण अंतर के न्यूनतम योग के साथ ऐरे तत्व?

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

  1. सी++ सम ऐरे पहेली

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

  1. सी ++ में एक सम ऐरे पहेली?

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