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

सी++ में ग्रे कोड


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

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • एक सरणी उत्तर बनाएं
  • प्रत्येक संख्या के लिए ग्रे कोड ढूंढें और उन्हें उत्तर सरणी में जोड़ें।
  • ग्रे में बदलने के लिए, हम नंबर लेंगे और नंबर 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;
   }
};
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++ . में रेखा परावर्तन

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

  1. C++ . में विकर्ण ट्रैवर्स II

    मान लीजिए कि हमारे पास nums नामक सूचियों की एक सूची है, हमें अंकों के सभी तत्वों को विकर्ण क्रम में दिखाना होगा। तो, अगर इनपुट पसंद है तो आउटपुट [1,6,2,8,7,3,9,4,12,10,5,13,11,14,15,16] होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - एक सरणी रिट परिभाषित करें एक 2डी सरणी को परिभाषित

  1. सी ++ में प्रक्रिया को मारें

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