কম্পিউটার

C++ এ ক্রমবর্ধমান ক্রমে কার্ড প্রকাশ করুন


ধরুন আমাদের একটি তাসের ডেক আছে; প্রতিটি কার্ডের একটি অনন্য সংখ্যা আছে। আমরা যে কোন ক্রমে ডেক অর্ডার করতে পারি। তাই প্রাথমিকভাবে, সমস্ত কার্ড এক ডেকে মুখের নিচে (অপ্রকাশিত) শুরু হয়। এখন, আমরা নিম্নলিখিত পদক্ষেপগুলি একাধিকবার করি, যতক্ষণ না সমস্ত কার্ড প্রকাশিত হয় −

  • ধরুন আমাদের একটি তাসের ডেক আছে; প্রতিটি কার্ডের একটি অনন্য সংখ্যা আছে। আমরা যে কোন ক্রমে ডেক অর্ডার করতে পারি। তাই প্রাথমিকভাবে, সমস্ত কার্ড এক ডেকে মুখের নিচে (অপ্রকাশিত) শুরু হয়। এখন, আমরা নিম্নলিখিত পদক্ষেপগুলি একাধিকবার করি, যতক্ষণ না সমস্ত কার্ড প্রকাশিত হয় −

  • যদি এখনও ডেকে কার্ড থাকে, তাহলে ডেকের নীচের অংশে ডেকের পরবর্তী শীর্ষ কার্ডটি রাখুন৷

  • যদি এখনও অদেখা কার্ডগুলি থেকে থাকে, তাহলে ধাপ 1 এ ফিরে যান৷ অন্যথায়, প্রক্রিয়াটি বন্ধ করুন৷

তাই আমাদের ডেকের একটি অর্ডার ফেরত দিতে হবে যা কার্ডগুলিকে ক্রমবর্ধমান ক্রমে প্রকাশ করবে।

এখন উত্তরের প্রথম এন্ট্রিটিকে ডেকের শীর্ষ বলে মনে করা হয়৷

সুতরাং যদি ইনপুটটি [17,13,11,2,3,5,7] এর মত হয়, তবে আউটপুট হবে [2,13,3,11,5,17,7], ধরা যাক আমরা এটিকে পুনরায় সাজিয়েছি। [2,13,3,11,5,17,7], এখন 2 উপরে আছে, 2 দেখার পর, 13 কে শেষের দিকে নিয়ে যান, তাই ডেকটি [3,11,5,17,7,13' এর মত হবে ], তারপর 3 সরান, এবং আবার পদক্ষেপ করুন। সুতরাং ডেকটি হবে [5,17,7,13,11], তারপর 5টি সরিয়ে ফেলুন, তারপরে উপরে থেকে নীচে যাওয়ার পরে, অ্যারেটি হবে [7,13,11,17], তারপর একই কাজ করে, ডেক কাঠামো হবে [11,17,13], [13.17], [17], তারপর 17 মুছে দিন।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • প্রথমে ডেক সাজান, সেট করুন n :=ডেকের সাইজ

  • একটি সারি q সংজ্ঞায়িত করুন, এবং একটি অ্যারে যাকে বলা হয় আকার n

  • q-তে পরপর i উপাদান সন্নিবেশ করান, যেখানে i 0 থেকে n – 1

  • 0 থেকে n – 1

    রেঞ্জের i জন্য
    • x :=q এর সামনের উপাদান, তারপর সারি থেকে মুছুন

    • উত্তর[x] :=ডেক[i]

    • x :=q এর সামনের উপাদান এবং সারি থেকে মুছে ফেলুন

    • q

      -এ x সন্নিবেশ করান
  • উত্তর ফেরত দিন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<int> v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << v[i] << ", ";
   }
   cout << "]"<<endl;
}
class Solution {
   public:
   vector<int> deckRevealedIncreasing(vector& deck) {
      sort(deck.begin(), deck.end());
      int n = deck.size();
      queue <int> q;
      vector <int> ans(n);
      for(int i = 0; i < n; i++)q.push(i);
      int x;
      for(int i = 0; i < n; i++){
         x = q.front();
         q.pop();
         ans[x] = deck[i];
         x = q.front();
         q.pop();
         q.push(x);
      }
      return ans;
   }
};
main(){
   vector<int> v1 = {17,13,11,2,3,5,7};
   Solution ob;
   print_vector(ob.deckRevealedIncreasing(v1));
}

ইনপুট

[17,13,11,2,3,5,7]

আউটপুট

[2,13,3,11,5,17,7]

  1. C++ এ অপারেন্ডের মূল্যায়ন ক্রম

  2. C++ প্রোগ্রামে n অ্যারে থেকে অর্ডার উপাদান বৃদ্ধির সর্বোচ্চ যোগফল

  3. C++ প্রোগ্রামে ক্রমবর্ধমান অনুসারীর সর্বোচ্চ পণ্য

  4. C++ এ বাইনারি ট্রি ভার্টিক্যাল অর্ডার ট্রাভার্সাল