C++ で、次を中国語に翻訳します。 A と B の XOR 結果が C と等しくなるように、ビット 反転の最小数を計算します。

王林
リリース: 2023-08-27 11:57:08
転載
645 人が閲覧しました

C++ で、次を中国語に翻訳します。 A と B の XOR 結果が C と等しくなるように、ビット 反転の最小数を計算します。

長さ N の 3 つのバイナリ シーケンス A、B、C が与えられます。各シーケンスは、 2 進数。私たちはそうではないことを見つけなければなりません。 A と B の XOR が C になるように、A と B のビットに必要なフリップの数。 XOR B は C になります。

まず、XOR 演算の真理値表を理解しましょう。

#00001 1101110
XX Y XX XOR Y
#上記の表から、X と Y の同じ値については、X XOR Y であることがわかります。結果は 0、それ以外の場合 結果 1. したがって、これは、A と B で反転して C に到達するビットを見つけるのに役立ちます。状況は次のようになります。

    A[i]==B[i] および C[i]==0 の場合、反転は必要ありません。
  • if A[i]= = B[i] かつ C[i]==1 の場合、A[i] または B[i] を反転して反転回数を 1
  • If A[i]!=B[i] およびC[i]==0 の場合、A[i] または B[i] を反転してフリップ数を 1 ずつ増やします
  • If A[i]!=B[i] and C[i]== 1、その後、裏返す必要はありません。
入力

A[]= { 0,0,0,0 } B[]= { 1,0,1,0 } C= {1,1,1,1}
ログイン後にコピー

出力

Required flips : 2
ログイン後にコピー
ログイン後にコピー

説明

の中国語翻訳は次のとおりです:

説明

A[0] xor B[0] 0 xor 1 = 1 C[0]=1 no flip
A[1] xor B[1] 0 xor 0 = 0 C[0]=1 flip count=1
A[2] xor B[2] 0 xor 1 = 1 C[0]=1 no flip
A[3] xor B[3] 0 xor 0 = 0 C[0]=1flip count=2
ログイン後にコピー

入力

A[]= { 0,0,1,1 } B[]= { 0,0,1,1 } C= {0,0,1,1}
ログイン後にコピー

出力

Required flips : 2
ログイン後にコピー
ログイン後にコピー

説明

の中国語翻訳は次のとおりです。

説明

A[0] xor B[0] 0 xor 0 = 0 C[0]=0 no flip
A[1] xor B[1] 0 xor 0 = 0 C[0]=0 no flip
A[2] xor B[2] 1 xor 1 = 0 C[0]=1 flip count=1
A[3] xor B[3] 1 xor 1 = 0 C[0]=1 flip count=2
ログイン後にコピー

次のプログラムで使用されるメソッドは次のとおりです

    # 配列 a[]、b[]、および c[] は、2 進数を格納するために使用されます。
  • < /p>

  • 関数 FlipCount(int A[], int B[], int C[], int n) は、配列 a、b、c とその長さ n を次のように受け取ります。 C[] が A XOR B と等しくなるように、A[] または B[] のビットに必要なフリップの数を入力して返します。 B
  • 変数 count はフリップ数を表し、0 に初期化されます。
  • for ループを使用して、i = 0 から i までセル内の各ビットを反復処理します。
  • 各ビット A[i ] についてそしてB[i]。それらが等しく、C[i] が 1 の場合、カウントをインクリメントします。
  • 各ビット A[i] および B[i]。それらが等しくなく、C[i] が 0 の場合、カウントをインクリメントします。
  • 必要な結果の数を返します。

ライブ デモンストレーション

#include<bits/stdc++.h>
using namespace std;
int flipCount(int A[], int B[], int C[], int N){
   int count = 0;
   for (int i=0; i < N; ++i){
      // If both A[i] and B[i] are equal then XOR results 0, if C[i] is 1 flip
      if (A[i] == B[i] && C[i] == 1)
         ++count;
         // If Both A and B are unequal then XOR results 1 , if C[i] is 0 flip
      else if (A[i] != B[i] && C[i] == 0)
         ++count;
   }
   return count;
}
int main(){
   //N represent total count of Bits
   int N = 5;
   int a[] ={1,0,0,0,0};
   int b[] ={0,0,0,1,0};
   int c[] ={1,0,1,1,1};
   cout <<"Minimum bits to flip such that XOR of A and B equal to C :"<<flipCount(a, b, c,N);
   return 0;
}
ログイン後にコピー

出力

Minimum bits to flip such that XOR of A and B equal to C :2
ログイン後にコピー

以上がC++ で、次を中国語に翻訳します。 A と B の XOR 結果が C と等しくなるように、ビット 反転の最小数を計算します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート