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

C++ में बढ़ते क्रम में कार्ड प्रकट करना (Reveal Cards In Increasing Order)


मान लीजिए हमारे पास कार्ड्स का एक डेक है; प्रत्येक कार्ड का एक अद्वितीय नंबर है। हम डेक को किसी भी क्रम में व्यवस्थित कर सकते हैं। प्रारंभ में, सभी कार्ड्स फेस डाउन (अनप्रकट) एक डेक में शुरू होते हैं। अब, हम निम्न चरणों को कई बार करते हैं, जब तक सभी कार्ड प्रकट न हो जाएं:

  1. डेक के शीर्ष कार्ड को प्रकट करें (यदि कोई हो)।

  2. यदि डेक में अभी भी कार्ड हैं, तो अगले शीर्ष कार्ड को डेक के नीचे रखें।

  3. यदि अभी भी अनदेखे कार्ड हैं, तो चरण 1 पर वापस जाएं। अन्यथा, रुकें।

हमें डेक का एक क्रम लौटाना है जो कार्ड्स को बढ़ते क्रम में प्रकट करे। उत्तर में पहली प्रविष्टि को डेक का शीर्ष माना जाता है।

उदाहरण के लिए, यदि इनपुट [17,13,11,2,3,5,7] है, तो आउटपुट [2,13,3,11,5,17,7] होगा।

समाधान दृष्टिकोण

  1. पहले डेक को सॉर्ट करें, n := डेक का आकार

  2. एक क्यू q और आकार n का ans ऐरे बनाएं

  3. 0 से n-1 तक सूचकांकों को q में डालें

  4. i को 0 से n-1 तक: x = q.front() पॉप करें, ans[x] = deck[i], फिर अगला फ्रंट पॉप करके पीछे डालें

  5. ans लौटाएं

C++ कार्यान्वयन

#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<int>& 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; 
    } 
}; 

int main(){ 
    vector<int> v1 = {17,13,11,2,3,5,7}; 
    Solution ob; 
    print_vector(ob.deckRevealedIncreasing(v1)); 
    return 0; 
}

इनपुट

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

आउटपुट

[2,13,3,11,5,17,7]
  1. - C++ प्रोग्राम में n सरणियों से बढ़ते क्रम के तत्वों का अधिकतम योग

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

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

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

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

    समस्या विवरण मान लीजिए एक बाइनरी ट्री है, हमें उसके नोड्स के मान का वर्टिकल ऑर्डर ट्रैवर्सल ढूंढना है। यदि दो नोड्स एक ही पंक्ति और स्तंभ में हैं, तो क्रम बाएं से दाएं होना चाहिए। उदाहरण के लिए, यदि इनपुट इस तरह का ट्री है: तो आउटपुट [[9],[3,15],[20],[7]] होगा। समाधान दृष्टिकोण BFS (लेवल ऑर्डर ट