Heim  >  Artikel  >  Backend-Entwicklung  >  Nachdem Sie das gegebene Array in zwei Hälften geteilt und K zirkuläre Verschiebungen durchgeführt haben, ermitteln Sie die Summe des Arrays mithilfe einer bitweisen ODER-Verknüpfung

Nachdem Sie das gegebene Array in zwei Hälften geteilt und K zirkuläre Verschiebungen durchgeführt haben, ermitteln Sie die Summe des Arrays mithilfe einer bitweisen ODER-Verknüpfung

王林
王林nach vorne
2023-08-27 23:05:061230Durchsuche

Nachdem Sie das gegebene Array in zwei Hälften geteilt und K zirkuläre Verschiebungen durchgeführt haben, ermitteln Sie die Summe des Arrays mithilfe einer bitweisen ODER-Verknüpfung

In C++ bedeutet das Teilen eines Arrays, das Array in mehrere Unterarrays aufzuteilen. Der bitweise ODER-Operator wird verwendet, um Vergleiche und Berechnungen zwischen zwei bitweisen ODER-Indizes in C++ durchzuführen. In diesem Artikel verwenden wir k zirkuläre Verschiebungen, was bedeutet, dass die letzte Indexposition k-mal auf die Null-Indexposition verschoben wird, d. h. auf das erste Array-Element.

Nehmen wir ein Beispiel, um die zirkuläre Verschiebung im Array zu verstehen.

Das angegebene Array ist 1, 2, 3, 4, 5, 6, 7 mit der Länge 6.

Jetzt weisen wir k den Wert 3 zu, was k zirkuläre Verschiebungen bedeutet.

Die Betriebsschritte der kreisförmigen Verschiebung sind wie folgt:

Schritt 1 − Wir verschieben Index[6] nach Index[1] und dann speichert Index[5] die Position von Index[6]. Die erste kreisförmige Verschiebung wird zu 7,1,2,3,4,5,6, sodass sich die kreisförmige Verschiebung dreht.

Schritt 2 – Zweite Kreisverschiebung – 6,7,1,2,3,4,5

Schritt 3 – Dritte kreisförmige Schicht – 5,6,7,1,2,3,4 (Endergebnis)

Grammatik

vector <data_type>l; vector_name(parameter 1, parameter 2)
  • Vector wird als Schlüsselwort verwendet und der Datentyp wird vom Benutzer angegeben. Schließlich repräsentiert vector_name den Namen des vom Benutzer zugewiesenen Vektors.

  • Der erste Parameter gibt die Größe des Vektors an. Der zweite Parameter ist der Wert, der zum Initialisieren jedes Elements des Vektors verwendet wird.

splitArray[i%2] = splitArray[i%2] | arr[(i+k)%arr.size()]
  • Teilen Sie das Array mit dem Operator mod(%) in zwei Hälften auf und durch die Verwendung von bitweisem ODER ‘|’ können wir den Wert jedes Elements in beiden Hälften erhalten.

  • 'arr[(i+k)%arr.size()]' stellt den Verschiebungsindex dar, wenn eine bitweise ODER-Operation ausgeführt wird, die je nach 'splitArray[ eines der beiden Elemente im geteilten Array ergibt i%2]' entsprechende Beziehung.

Algorithmus

  • Wir starten das Programm mit den Header-Dateien ‘iostream‘ und ‘vector‘.

  • Wir werden eine Funktion namens ‘Split_arr_sum_bitwise’ definieren, die ‘arr’ und ‘k’ als Parameter akzeptiert. Diese Funktion empfängt einen Array-Wert und nach einer zirkulären Verschiebung einen aktualisierten Array-Wert.

  • Wir werden eine Vektorvariable mit dem Namen ‘splitArray‘ innerhalb der Funktion ‚Split_arr_sum_bitwise‘ initialisieren. Diese Funktion speichert beide Hälften des Arrays.

  • Als nächstes verwenden Sie den bitweisen ODER-Operator „|“, um den Wert 0 in der Variablensumme zu speichern, der später mit einer Funktion namens „splitArray“ zum Array hinzugefügt wird.

  • Dann erstellen wir die erste for-Schleife, in der wir das ursprüngliche Array durchlaufen.

  • Dann erstellen wir eine zweite for-Schleife, die die bitweisen Operatoren ‘|‘ verwendet, um die Summe der beiden Hälften zu berechnen. Dieser Operator teilt das Array nach K kreisförmigen Verschiebungen in zwei Hälften.

  • Jetzt starten wir die Hauptfunktion. Hier initialisieren wir den Array-Wert als Variable 'array' und speichern den Wert '3' in der Variablen 'k', die die kreisförmige Verschiebung der angegebenen Array-Anzahl definiert Bits.

  • Schließlich rufen wir in der print-Anweisung die Funktion mit dem Namen ‘Split_arr_sum_bitwise‘ auf und übergeben ihr die Parameter ‘K‘ und ‘array‘, um die endgültige Ausgabe zu erhalten.

Die chinesische Übersetzung von

Beispiel

lautet:

Beispiel

In diesem Programm verwenden wir den bitweisen ODER-Operator, um die Array-Summe zu implementieren und teilen das Array dann nach K kreisförmigen Verschiebungen in zwei Hälften auf.

#include <iostream>
#include <vector>
using namespace std;
int Split_arr_sum_bitwise(vector<int>& arr, int k) {
   vector<int> splitArray(2,0);
   int sum = 0;
   // Splitting the array into two halves after K-Circular Shift.
   for (int i = 0; i < arr.size(); i++) {
      splitArray[i % 2] = splitArray[i % 2] | arr[(i + k) % arr.size()];
   }
   // Sum of two halves using bitwise OR
   for (int i = 0; i < splitArray.size(); i++) {
      sum = sum | splitArray[i];
   }
   return sum;
}
int main() {
   vector<int> array = {1, 2, 3, 4, 5, 6, 7};
   int k = 3;
   cout <<"The split sum of array halves using bitwise OR is "<<Split_arr_sum_bitwise(array, k) << endl;
   return 0;
}

Ausgabe

The split sum of array halves using bitwise OR is 7

Fazit

Wir haben das Konzept der K-zirkulären Verschiebungen untersucht, bei denen ein Array in zwei Hälften geteilt wird, und haben auch gesehen, wie die bitweise ODER-Operation eine Summe durchführt, um die Werte des geteilten Arrays zu speichern. Der Modulo-Operator % teilt das Array in zwei Hälften und zeigt die Paritätsberechnung an der Indexposition des Arrays an.

Das obige ist der detaillierte Inhalt vonNachdem Sie das gegebene Array in zwei Hälften geteilt und K zirkuläre Verschiebungen durchgeführt haben, ermitteln Sie die Summe des Arrays mithilfe einer bitweisen ODER-Verknüpfung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen