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

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 की सीमा में

    • x :=q का अगला तत्व, फिर कतार से हटाएं

    • ans[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++ प्रोग्राम में n सरणियों से बढ़ते क्रम तत्वों का अधिकतम योग

    इस समस्या में, हमें nXm आकार का 2-D मैट्रिक्स दिया गया है। हमारा काम n सरणियों से बढ़ते क्रम तत्वों का अधिकतम योग खोजने के लिए एक प्रोग्राम बनाना है। कार्यक्रम विवरण - यहां, हमें प्रत्येक पंक्ति से एक तत्व को इस तरह से लेकर तत्वों का अधिकतम योग ज्ञात करने की आवश्यकता है कि ith पंक्ति का तत्व (i+1)व

  1. C++ प्रोग्राम में बढ़ते क्रम का अधिकतम उत्पाद

    इस समस्या में, हमें n आकार का एक सरणी arr[] दिया जाता है। हमारा कार्य बढ़ते क्रम के अधिकतम उत्पाद को खोजना है। समस्या का विवरण - हमें सरणी के तत्वों से किसी भी संभव आकार के बढ़ते क्रम के अधिकतम उत्पाद को खोजने की जरूरत है। समस्या को समझने के लिए एक उदाहरण लेते हैं, इनपुट arr[] = {5, 4, 6, 8, 7, 9

  1. C++ में बाइनरी ट्री वर्टिकल ऑर्डर ट्रैवर्सल

    मान लीजिए कि एक बाइनरी ट्री है, हमें इसके नोड्स के मानों का वर्टिकल ऑर्डर ट्रैवर्सल खोजना होगा। यदि दो नोड एक ही पंक्ति और स्तंभ में हैं, तो क्रम बाएं से दाएं होना चाहिए। तो, अगर इनपुट पसंद है, तो आउटपुट [[9],[3,15],[20],[7]] . होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - एक नक्शा प