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

C++ में बाइनरी रिप्रेजेंटेशन में सर्कुलर क्रमपरिवर्तन

मान लीजिए कि हमारे पास 2 पूर्णांक n हैं और प्रारंभ करें। हमारा कार्य किसी भी क्रमपरिवर्तन p (0,1,2.....,2^n -1) को निम्नानुसार लौटाना है -

  • p[0] =प्रारंभ
  • p[i] और p[i+1] अपने द्विआधारी प्रतिनिधित्व में केवल एक बिट से भिन्न होते हैं।
  • p[0] और p[2^n -1] भी उनके द्विआधारी प्रतिनिधित्व में केवल एक बिट से भिन्न होना चाहिए।

तो अगर इनपुट n =2 और start =3 जैसा है, तो लौटा हुआ ऐरे [3,2,0,1] होगा, ये हैं [11,10,00,01]

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

  • उत्तर एक सरणी है
  • मैं के लिए 0 से 2^n की सीमा में
    • प्रारंभ XOR i XOR i/2 को उत्तर में डालें
  • वापसी उत्तर

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<auto> v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
         cout << v[i] << ", ";
   }
   cout << "]"<<endl;
}
class Solution {
public:
   vector<int> circularPermutation(int n, int start) {
      vector <int> ans;
      for(int i = 0 ; i < 1<<n; i++){
         ans.push_back(start ^ i ^(i>>1));
      }
      return ans;
   }
};
main(){
   Solution ob;
   print_vector(ob.circularPermutation(5,3));
}

इनपुट

5
3

आउटपुट

[3, 2, 0, 1, 5, 4, 6, 7, 15, 14, 12, 13, 9, 8, 10, 11, 27, 26, 24, 25, 29, 28, 
30, 31, 23, 22, 20, 21, 17, 16, 18, 19, ]

  1. सी++ में अगले नंबर का बाइनरी प्रतिनिधित्व

    इस समस्या में, हमें एक संख्या का द्विआधारी प्रतिनिधित्व दिया जाता है और हमें अगली संख्या का द्विआधारी प्रतिनिधित्व यानी वह संख्या ढूंढनी होती है जो दी गई संख्या में एक जोड़ने के बाद प्राप्त होती है। द्विआधारी प्रतिनिधित्व संख्या का आधार संख्या के आधार को आधार 2 में बदल रहा है और केवल 0 या 1 का उपयो

  1. C++ में दी गई संख्या का बाइनरी प्रतिनिधित्व

    एक बाइनरी नंबर एक संख्या है जिसमें केवल दो अंक 0 और 1 होते हैं। उदाहरण के लिए, 01010111। किसी दिए गए नंबर को बाइनरी रूप में दर्शाने के कई तरीके हैं। पुनरावर्ती विधि इस विधि का उपयोग किसी संख्या को उसके द्विआधारी रूप में प्रत्यावर्तन का उपयोग करके दर्शाने के लिए किया जाता है। एल्गोरिदम Step 1 : if

  1. जांचें कि क्या किसी संख्या का द्विआधारी प्रतिनिधित्व पायथन में पैलिंड्रोम है

    मान लीजिए कि हमारे पास एक संख्या n है। हमें जांचना है कि n का द्विआधारी प्रतिनिधित्व पैलिंड्रोम है या नहीं। इसलिए, यदि इनपुट n =9 जैसा है, तो आउटपुट सही होगा क्योंकि 9 का बाइनरी प्रतिनिधित्व 1001 है, जो कि पैलिंड्रोम है। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - उत्तर:=0 0 होने पर, . करे