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

C++ में ग्रे कोड (Gray Code)


जैसा कि हम जानते हैं कि ग्रे कोड एक बाइनरी न्यूमरल सिस्टम है जहां दो क्रमिक मान केवल एक बिट में भिन्न होते हैं। मान लीजिए हमारे पास एक गैर-ऋणात्मक पूर्णांक n है जो कोड में बिट्स की कुल संख्या दर्शाता है। हमें ग्रे कोड का अनुक्रम प्रिंट करना है। एक ग्रे कोड अनुक्रम 0 से शुरू होना चाहिए। यदि इनपुट 2 है, तो परिणाम [0,1,3,2] होगा, क्योंकि 0 का ग्रे 00 है, 1 का ग्रे 01 है, 2 का ग्रे 11 है, और 3 का ग्रे 10 है।

इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:

  • ans नामक एक सरणी बनाएं
  • प्रत्येक संख्या के लिए ग्रे कोड ढूंढें और उन्हें ans सरणी में जोड़ें।
  • ग्रे में बदलने के लिए, हम संख्या लेंगे और संख्या को 1 बिट दाएं शिफ्ट करने के बाद XOR करेंगे।

उदाहरण

#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> grayCode(int n) {
        vector <int> ans;
        for(int i = 0; i < (1 << n); i++){
            ans.push_back(i ^ (i >> 1));
        }
        return ans;
    }
};

int main(){
    Solution ob;
    print_vector(ob.grayCode(4));
}

इनपुट

4

आउटपुट

[0, 1, 3, 2, 6, 7, 5, 4, 12, 13, 15, 14, 10, 11, 9, 8, ]
  1. C++ में लाइन रिफ्लेक्शन - Y-अक्ष के समानांतर सममित रेखा जांचें C++ में लाइन रिफ्लेक्शन - Y-अक्ष के समानांतर सममित रेखा जांचें

    समस्या विवरण मान लीजिए हमारे पास 2D तल पर n बिंदु हैं, हमें जांचना है कि क्या y-अक्ष के समानांतर कोई रेखा है जो दिए गए बिंदुओं को सममित रूप से प्रतिबिंबित करती है, दूसरे शब्दों में, जांचें कि क्या कोई ऐसी रेखा मौजूद है जो सभी बिंदुओं को दी गई रेखा पर प्रतिबिंबित करने के बाद मूल बिंदुओं का समुच्चय प

  1. C++ में डायगोनल ट्रैवर्स II C++ में डायगोनल ट्रैवर्स II

    मान लीजिए हमारे पास nums नामक लिस्ट ऑफ लिस्ट है, हमें nums के सभी एलिमेंट्स को डायगोनल क्रम में दिखाना है।इसलिए, यदि इनपुट हैतो आउटपुट होगा [1,6,2,8,7,3,9,4,12,10,5,13,11,14,15,16]इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे:एक ऐरे ret परिभाषित करेंएक 2D ऐरे v परिभाषित करेंi := 0 से शुरू करें,

  1. C++ में प्रोसेस मारें C++ में प्रोसेस मारें

    मान लीजिए हमारे पास n प्रोसेस हैं, यहां प्रत्येक प्रोसेस की एक अद्वितीय आईडी होती है जिसे PID या प्रोसेस आईडी कहा जाता है और इसका PPID (पैरेंट प्रोसेस आईडी) भी होता है। प्रत्येक प्रोसेस का केवल एक पैरेंट प्रोसेस होता है, लेकिन उसके एक या अधिक चाइल्ड प्रोसेस हो सकते हैं। यह एक ट्री संरचना की तरह है।