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

सी ++ में दिए गए ऑपरेशन के साथ सरणी को एक पूर्णांक में कम करें

इनपुट के रूप में एक पूर्णांक चर संख्या को देखते हुए। आइए किसी भी क्रम में 1 से संख्या तक के तत्वों वाले एक सरणी पर विचार करें। अगर हम किसी ऐरे पर एक ऑपरेशन Number-1 बार इस तरह से करते हैं कि

  • हम सरणी से दो तत्वों A और B का चयन करते हैं

  • ए और बी को ऐरे से निकालें

  • सरणी में A और B के वर्गों का योग जोड़ें

हमें अंत में एक पूर्णांक मान मिलेगा; लक्ष्य उस तत्व के लिए अधिकतम संभव मूल्य खोजना है।

प्राथमिकता कतार का उपयोग करना

  • अंतिम परिणाम को अधिकतम करने के लिए, हमें ए और बी को इस तरह चुनना होगा कि वे अधिकतम हों।

  • अधिकतम ए और बी खोजने के लिए, हम इसके अंदर तत्वों के मूल्यों को संग्रहीत करने के लिए प्राथमिकता कतार का उपयोग करेंगे।

  • एक प्राथमिकता कतार तत्वों को घटते क्रम में संग्रहीत करती है।

  • शीर्षतम तत्व मूल्य में सबसे बड़ा है और इसी तरह। तो दो तत्वों को पॉप करने के बाद हम उनके वर्गों को फिर से कतार में धकेल देंगे।

  • वांछित परिणाम प्राप्त करने के लिए नंबर - 1 बार पॉप और पुश करेगा।

उदाहरण

इनपुट - संख्या=2

आउटपुट - सरणी में कमी के बाद एकल तत्व:5

स्पष्टीकरण - मान लीजिए कि हमारे पास सरणी में तत्व हैं [ 1 2]

प्राथमिकता कतार में डालने के बाद-:2 1

ए=5, बी=4 :ए 2 +बी 2 =1+4=5

अंतिम तत्व:5

इनपुट - संख्या=5

आउटपुट - सरणी में कमी के बाद एकल तत्व:5

स्पष्टीकरण - मान लीजिए कि हमारे पास सरणी में तत्व हैं [ 5 1 2 4 3]

प्राथमिकता कतार में डालने के बाद-:5 4 3 2 1

ए=5, बी=4 :ए 2 +बी 2 =25+16=41 :41 3 2 1

ए=41, बी=3 :ए 2 +बी 2 =1681+9=1690 :1690 2 1

ए=1690, बी=2 :ए 2 +बी 2 =1681+4=2856104 :2856104 1

A=2856104 , B=1 :A 2 +बी 2 =1187163712+1=1187163713 :1187163713

अंतिम तत्व :1187163713

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

इस दृष्टिकोण में हम सरणी के तत्वों को घटते क्रम में संग्रहीत करने के लिए कतार को प्राथमिकता देंगे। शीर्ष दो सबसे बड़े तत्वों को पॉप करें और दोनों के वर्गों के योग को फिर से उस कतार में धकेलें। ऐसा तब तक करें जब तक कि केवल एक मान न बचे।

  • इनपुट वेरिएबल नंबर लें।

  • परिणामों के लिए लंबे पूर्णांकों के रूप में डेटा प्रकार लें - lli

  • फ़ंक्शन कम करेंअरे (int Num) इनपुट नंबर लेता है और उपरोक्त संचालन का उपयोग करके गणना की गई अधिकतम एकल पूर्णांक देता है।

  • प्राथमिकता कतार को pQueue के रूप में लें।

  • थोड़ी देर के लूप का उपयोग करके pQueue को संख्या 1 से N तक पॉप्युलेट करें।

  • जबकि i<=Num, i को pQueue पर पुश करें

  • अब pQueue में 1 से N तक के पूर्णांक घटते क्रम में हैं और आकार N है।

  • अब pQueue को थोड़ी देर के लूप का उपयोग करके तब तक पार करें जब तक कि उसका आकार> =1 न हो जाए।

  • अधिकतम को var1=pQueue.top() के रूप में लें और इसे पॉप करें।

  • अगले अधिकतम को var2=pQueue.top() के रूप में लें और इसे पॉप करें।

  • var1 को इसके वर्ग के रूप में और var2 को इसके वर्ग के रूप में सेट करें।

  • var1+var2 को फिर से pQueue पर पुश करें।

  • जबकि लूप के अंत में, शीर्ष तत्व लौटाएं।

  • परिणाम को मुख्य के अंदर प्रिंट करें।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
#define lli long long int
int reduceArray(int Num){
   priority_queue<lli> pQueue;
   int i=1;
   while(i<=Num){
      pQueue.push(i);
      i=i+1;
   }
   while (pQueue.size() > 1) {
      lli var1 = pQueue.top();
      pQueue.pop();
      lli var2 = pQueue.top();
      pQueue.pop();
      var1=var1*var1;
      var2=var2*var2;
      pQueue.push(var1+var2);
   }
   return pQueue.top();
}
int main(){
   int Number = 5;
   cout<<"Single element after array reduction: "<<reduceArray(Number);
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा

Single element after array reduction: 1187163713

  1. C++ में दिए गए पूर्णांक सरणी के सभी विशिष्ट तत्वों को प्रिंट करें

    इस समस्या में, हमें पूर्णांक मानों की एक सरणी दी जाती है। हमारा काम सरणी के सभी अलग-अलग तत्वों को प्रिंट करना है। आउटपुट में केवल विशिष्ट मान होने चाहिए। आइए समस्या को समझने के लिए एक उदाहरण लेते हैं Input: array = {1, 5, 7, 12, 1, 6, 10, 7, 5} Output: 1 5 7 12 6 10 इस समस्या को हल करने के लिए, हम

  1. सी ++ में दिए गए ऑपरेशन के साथ सरणी योग को अधिकतम करना

    विवरण (2 * n - 1) पूर्णांकों की एक सरणी है। हम सरणी में बिल्कुल n तत्वों का चिह्न बदल सकते हैं। दूसरे शब्दों में, हम बिल्कुल n सरणी तत्वों का चयन कर सकते हैं, और उनमें से प्रत्येक को -1 से गुणा कर सकते हैं। सरणी का अधिकतम योग ज्ञात करें। उदाहरण यदि इनपुट ऐरे {-2, 100, -3} है तो हम -2 और -3 के अधिक

  1. C++ में दिए गए अंतर के साथ एक जोड़ी खोजें

    विचार करें कि हमारे पास एक सरणी A है, n विभिन्न तत्व हैं। हमें सरणी A से एक युग्म (x, y) ज्ञात करना है, ताकि x और y के बीच का अंतर दिए गए अंतर d के समान हो। मान लीजिए कि तत्वों की एक सूची A =[10, 15, 26, 30, 40, 70] की तरह है, और दिया गया अंतर 30 है, तो जोड़ी होगी (10, 40) और (30, 70) इस समस्या को