Maison > développement back-end > C++ > En C++, traduisez ce qui suit en chinois : Calculez le nombre minimum d'inversions de bits de telle sorte que le résultat XOR de A et B soit égal à C.

En C++, traduisez ce qui suit en chinois : Calculez le nombre minimum d'inversions de bits de telle sorte que le résultat XOR de A et B soit égal à C.

王林
Libérer: 2023-08-27 11:57:08
avant
675 Les gens l'ont consulté

En C++, traduisez ce qui suit en chinois : Calculez le nombre minimum dinversions de bits de telle sorte que le résultat XOR de A et B soit égal à C.

Étant donné trois séquences binaires A, B et C de longueur N. Chaque séquence représente un Nombre binaire. Nous devons découvrir non. Le nombre de retournements requis pour les bits de A et B tels que le XOR de A et B donne C. A XOR B devient C.

Commençons par comprendre la table de vérité de l'opération XOR -

01 1101 110si A[i]==B[i] et C[i]==0, aucun retournement n'est nécessaire, si A[i]==B[i] et C[i] = =1, puis retournez A[i] ou B[i] et augmentez le nombre de retournements de 1Si A[i]!=B[i] et C[i]==0, retournez A[i] ou B [i] et incrémentez le nombre de retournements de 1Si A[i]!=B[i] et C[i]==1, aucun retournement n'est requis. La traduction chinoise de
X Y X
D'après le tableau ci-dessus on observe que pour les mêmes valeurs en X et Y, X Le résultat est 0, sinon Résultat 1. Cela aidera donc à trouver les bits qui inversent A et B pour atteindre C. La situation sera
Input

A[]= { 0,0,0,0 } B[]= { 1,0,1,0 } C= {1,1,1,1}
Copier après la connexion

Output
    Required flips : 2
    Copier après la connexion
    Copier après la connexion
  • Explanation
  • est :
  • Explanation
  • 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
    Copier après la connexion
  • Input
  • A[]= { 0,0,1,1 } B[]= { 0,0,1,1 } C= {0,0,1,1}
    Copier après la connexion
  • Output
  • Required flips : 2
    Copier après la connexion
    Copier après la connexion
Explanation

La traduction chinoise est :

Explanation

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
Copier après la connexion

Dans le programme suivant La méthode utilisé est le suivant

Les tableaux a[], b[] et c[] sont utilisés pour stocker des nombres binaires.

La fonction FlipCount(int A[], int B[], int C[], int n) prend les tableaux a, b, c et leur longueur n comme Saisir et renvoyer le nombre de retournements requis sur les bits de A[] ou B[] pour que C[] soit égal à A XOR B B

La variable count représente le nombre de flips et est initialisée à 0.

  • Utilisez une boucle for pour parcourir chaque bit de la cellule en commençant par i = 0 jusqu'à i

    < /p>

  • pour chaque bit A[i] et B[i]. S'ils sont égaux et que C[i] vaut 1, incrémentez le décompte.

  • Pour chaque bit A[i] et B[i]. S'ils ne sont pas égaux et que C[i] vaut 0, incrémentez le décompte.

  • Renvoie le décompte du résultat souhaité.

  • Exemple

    Démonstration en direct
  • #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;
    }
    Copier après la connexion
  • Sortie

    Minimum bits to flip such that XOR of A and B equal to C :2
    Copier après la connexion

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal