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

सी ++ में सरणी के प्रत्येक तत्व को प्राप्त करने के लिए स्टैक पर पॉप ऑपरेशंस की संख्या की गणना करें


संख्याओं की एक सरणी और एक स्टैक को देखते हुए। सरणी के सभी तत्व स्टैक के अंदर मौजूद हैं लक्ष्य अलग-अलग सरणी तत्वों को प्राप्त करने के लिए आवश्यक पॉप संचालन की संख्या का पता लगाना है।

स्टैक को घटते क्रम में भरा जाता है, पहला तत्व उच्चतम होता है और शीर्ष तत्व निम्नतम होता है।

उदाहरण के लिए

इनपुट

Stack [ 7,6,2,1 ] array : 2,1,6,7

आउटपुट

Count of number of pop operations on stack to get each element of the array
are: 3 1 0 0

स्पष्टीकरण

Traversing array from 0th index, To get 2 we will pop stack three times. So arr[0] is 3. First two pops will give 7 and 6 also. To get 1 we will pop stack once now. So arr[1] is 1. For 6 and 7 as these are already popped, so arr[2]=arr[3]=0.

इनपुट

Stack [ 3,2,1,1 ] array : 1,2,1,3

आउटपुट

Count of number of pop operations on stack to get each element of the array
are: 3 0 1 0

स्पष्टीकरण

Traversing array from 0th index, To get 1 we will pop stack three times. So arr[0] is 3. First two pops will give 3 and 2 also.Traversing array from 0th index, To get 1 we will pop stack three times. So arr[0] is 3. First two pops will give 3 and 2 also.

नीचे दिए गए कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है -

इस दृष्टिकोण में हम एक unordered_map um का उपयोग यह जांचने के लिए करेंगे कि तत्व पहले से ही पॉप है या नहीं। पॉप तत्व और इसे उम में जोड़ें। यदि यह फिर से आता है तो पॉपिंग काउंट को 0 के रूप में सेट करें। यदि नहीं तो तब तक इंक्रीमेंट काउंट जब तक हम इसे प्राप्त नहीं कर लेते।

  • एक पूर्णांक सरणी arr[] लें।

  • इसमें तत्वों को संग्रहीत करने के लिए एक स्टैक स्टैक लें।

  • इसमें तत्वों को घटते क्रम में पुश करें।

  • फ़ंक्शन pop_operations(stack&stck, int arr[], int element) सरणी के प्रत्येक तत्व को प्राप्त करने के लिए स्टैक पर पॉप ऑपरेशंस की संख्या की गिनती देता है।

  • प्रारंभिक गणना 0 के रूप में लें।

  • स्टैक पर पॉप संचालन करते समय सामने आए अद्वितीय नंबरों को संग्रहीत करने के लिए unordered_map um लें।

  • लूप के लिए उपयोग कर ट्रैवर्स सरणी।

  • temp=arr[i] लें।

  • यदि तापमान उम में नहीं है। इसे प्राप्त करने के लिए आवश्यक 0 पॉप ऑपरेशन प्रिंट करें।

  • अन्यथा, जबकि अस्थायी नहीं मिला है, स्टैक पर पॉप प्रदर्शन करें और प्रत्येक तत्व को um में सही और वृद्धि गणना के रूप में सेट करें।

  • समय के अंत में, प्रिंट गिनती करें।

  • इस तरह हम सरणी के प्रत्येक तत्व के लिए पॉप ऑपरेशंस की संख्या प्रिंट करेंगे।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
void pop_operations(stack<int>& stck, int arr[], int elements){
   int count = 0;
   unordered_map<int, bool> um;
   cout<<"Count of number of pop operations on stack to get each element of the array are: ";
   for (int i = 0; i < elements; ++i){
      int temp = arr[i];
      if (um.find(temp) != um.end())
      { cout << "0 "; }
      else{
         count = 0;
         while (stck.top() != temp){
            um[stck.top()] = true;
            stck.pop();
            count++;
         }
         stck.pop();
         count++;
         cout<<count<<" ";
      }
   }
}
int main(){
   int elements = 4;
   int arr[] = { 2, 1, 6, 7};
   stack<int> stck;
   stck.push(1);
   stck.push(2);
   stck.push(6);
   stck.push(7);
   pop_operations(stck, arr, elements);
   return 0;
}

आउटपुट

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

Count of number of pop operations on stack to get each element of the array are: 3 1 0 0

  1. सी ++ का उपयोग करके सरणी के सभी तत्वों को हटाने के लिए आवश्यक संचालन की न्यूनतम संख्या।

    समस्या कथन एक पूर्णांक सरणी गिरफ्तारी को देखते हुए, कार्य सरणी के सभी तत्वों को हटाने के लिए आवश्यक न्यूनतम संख्या में संचालन को प्रिंट करना है। तत्व को हटाते समय निम्नलिखित प्रतिबंध लगाया जाता है - सरणी से किसी भी तत्व को यादृच्छिक रूप से चुना जा सकता है और इसके द्वारा विभाज्य प्रत्येक तत्व को

  1. सी ++ में सरणी में प्रत्येक तत्व की सर्पासर गणना खोजें

    मान लीजिए कि एक सरणी A दिया गया है। हमें उस सरणी में प्रत्येक तत्व की संख्या को पार करना होगा। पार करने वाले अधिक से अधिक तत्व होते हैं जो वर्तमान तत्व की सरणी के दाईं ओर मौजूद होते हैं। मान लीजिए A ={2, 7, 5, 3, 0, 8, 1}, श्रेष्ठ हैं {4, 1, 1, 2, 0, 0}, तो 2 में दायीं ओर 4 संख्याएँ हैं, जो बड़ी हैं

  1. सी ++ एसटीएल में ऐरे प्राप्त () फ़ंक्शन?

    इस खंड में हम C++ STL में ऐरे का get() फंक्शन देखेंगे। इस फ़ंक्शन का उपयोग सरणी कंटेनर के ith तत्व को प्राप्त करने के लिए किया जाता है। सिंटैक्स नीचे जैसा है - सिंटैक्स get<i> array_name यह फ़ंक्शन दो अनिवार्य पैरामीटर लेता है। सूचकांक पैरामीटर है। इसका उपयोग सरणी की ith स्थिति को इंगित करने