কম্পিউটার

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[] নিন।

  • এটিতে উপাদান সংরক্ষণের জন্য একটি স্ট্যাক stck নিন।

  • এটিতে উপাদানগুলিকে হ্রাসকারী ক্রমে পুশ করুন৷

  • ফাংশন pop_operations(stack&stck, int arr[], int উপাদান) অ্যারের প্রতিটি উপাদান পেতে স্ট্যাকের পপ অপারেশনের সংখ্যা প্রদান করে।

  • 0 হিসাবে প্রাথমিক গণনা নিন।

  • স্ট্যাকের পপ অপারেশন করার সময় সম্মুখীন হওয়া অনন্য সংখ্যাগুলি সংরক্ষণের জন্য unordered_map um নিন৷

  • লুপের জন্য ব্যবহার করে ট্রাভার্স অ্যারে।

  • temp=arr[i] নিন।

  • যদি তাপমাত্রা উমে না থাকে। এটি পেতে 0 পপ অপারেশন প্রিন্ট করুন।

  • অন্যথায় যখন টেম্প পাওয়া যায় না, স্ট্যাকের উপর পপ করুন এবং উমে পপ করা প্রতিটি উপাদানকে সত্য এবং বৃদ্ধির সংখ্যা হিসাবে সেট করুন।

  • সময়ের শেষে, প্রিন্ট গণনা।

  • এইভাবে আমরা অ্যারের প্রতিটি উপাদানের জন্য পপ অপারেশনের সংখ্যা প্রিন্ট করব।

উদাহরণ

#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. C++ এ Numpy অ্যারেতে প্রতিটি স্ট্রিং উপাদানের দৈর্ঘ্য খুঁজুন

  2. C++ ব্যবহার করে অ্যারের সমস্ত উপাদান মুছে ফেলার জন্য ন্যূনতম সংখ্যক অপারেশন প্রয়োজন।

  3. C++-এ অ্যারের প্রতিটি উপাদানের সারপাসার কাউন্ট খুঁজুন

  4. C++ STL-এ অ্যারে get() ফাংশন?