Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

nビットのグレイコードを生成するためのバックトラッキングアプローチ?


このセクションでは、バックトラッキングアプローチを使用してnビットのグレイコードを生成する方法を説明します。 nビットのグレイコードは基本的に0から2^n – 1のビットパターンであり、連続するパターンは1ビット異なります。したがって、n =2の場合、グレイコードは(00、01、11、10)であり、10進数に相当するものは(0、1、3、2)です。プログラムは、グレイコード値に相当する10進数を生成します。

アルゴリズム

generateGray(arr、n、num)

begin
   if n = 0, then
      insert num into arr
      return
   end if
   generateGray(arr, n-1, num)
   num := num XOR (1 bit left shift of n-1)
   generateGray(arr, n-1, num)
end

#include<iostream>
#include<vector>
using namespace std;
void generateGray(vector<int>&arr, int n, int &num){
   if(n==0){
      arr.push_back(num);
      return;
   }
   generateGray(arr, n-1, num);
   num = num ^ (1 << (n-1));
   generateGray(arr, n-1, num);
}
vector<int> gray(int n){
   vector<int> arr;
   int num = 0;
   generateGray(arr, n, num);
   return arr;
}
main() {
   int n;
   cout << "Enter number of bits: ";
   cin >> n;
   vector<int> grayCode = gray(n);
   for(int i = 0; i<grayCode.size(); i++){
      cout << grayCode[i] << endl;
   }
}

出力

Enter number of bits: 3
0
1
3
2
6
7
5
4

  1. Macで2FAコードを生成するための5つのベストオーセンティケーターアプリ

    二要素認証(2FA)でオンラインアカウントを保護したいですか?次に、セットアッププロセス中に関連するQRコードをスキャンするための認証システムアプリが必要になります。このようなアプリは、2FA対応アカウントのロックを解除するためのログインパスワードに加えて、必要な時間ベースのワンタイムパスワード(TOTP)を生成することもできます。 Webベースのオーセンティケーターアプリを使用するか、以下で説明する無料の2FAMacアプリのいずれかを選択できます。 1.認証 Authyは、シーンで最初の2FAサービスの1つであり、多くの人に人気があります。 Mac、Windows、Chrome、モバイ

  2. ソーシャル メディア プロフィール用の印刷可能な QR コードを生成する

    最近では、ソーシャル メディアに参加していない人のことを想像するのは困難です。私たちはソーシャル メディア アカウントを使用して自分自身を宣伝します。つまり、私たちについてもっと知りたい人は、ソーシャル メディア アカウントにアクセスできます。 ソーシャル メディアのリンクを電子メールで共有することがよくあります。また、ID やユーザー名を他のユーザーと共有することもあります。リンクがソーシャル メディア アカウントにアクセスしてもらう最も簡単な方法であることは間違いありませんが、印刷媒体や履歴書からアクセスしてもらいたい場合はどうでしょうか。ユーザー名を提供することは、読者の手間がかかるた