Inhaltsverzeichnis
Algorithmus
Beispiel
Ausgabe
Codebeschreibung
Testfallbeispiel
Fazit
Heim Backend-Entwicklung C++ Mindestanzahl von nicht benachbarten Paarwechseln, die erforderlich sind, um alle Nullen in einer Binärzeichenfolge zu entfernen

Mindestanzahl von nicht benachbarten Paarwechseln, die erforderlich sind, um alle Nullen in einer Binärzeichenfolge zu entfernen

Sep 04, 2023 pm 01:09 PM
二进制 翻转 nicht benachbart

Mindestanzahl von nicht benachbarten Paarwechseln, die erforderlich sind, um alle Nullen in einer Binärzeichenfolge zu entfernen

In einer binären Zeichenfolge kann durch das Umdrehen eines Paares benachbarter Bits leicht eine einzelne 0 aus der Zeichenfolge entfernt werden. Wenn wir jedoch alle Nullen aus einer Binärzeichenfolge entfernen müssen, müssen wir möglicherweise auch nicht benachbarte Bitpaare umdrehen. In diesem Artikel besprechen wir, wie man die Mindestanzahl nicht benachbarter Paarumdrehungen bestimmt, die erforderlich sind, um alle Nullen aus einer Binärzeichenfolge zu entfernen.

Algorithmus

Um dieses Problem zu lösen, verwenden wir einen einfachen Greedy-Algorithmus. Die Idee besteht darin, immer das Bitpaar zu wählen, das am weitesten voneinander entfernt ist und zwischen dem mindestens eine 0 liegt. Wir können diese beiden Bits dann umdrehen und so effektiv eine 0 aus der Zeichenfolge entfernen. Wir wiederholen diesen Vorgang, bis alle Nullen entfernt wurden.

Jetzt implementieren wir diesen Algorithmus in C++.

Beispiel

#include <iostream>
#include <cstring>

using namespace std;

int main() {
   string s;
   s="100101000";
   int n = s.size();
   
   int cnt = 0;
   for (int i = 0; i < n; i++) {
      if (s[i] == '0') {
         cnt++;
         if (i+2 < n && s[i+2] == '0') {
            i += 2;
         }
         else {
            i++;
         }
      }
   }
   
   cout << cnt << endl;
   return 0;
}
Nach dem Login kopieren

Ausgabe

3
Nach dem Login kopieren

Codebeschreibung

Der obige Code verwendet eine Binärzeichenfolge als Eingabe und berechnet die Mindestanzahl nicht benachbarter Paarumdrehungen, die erforderlich sind, um alle Nullen aus der Zeichenfolge zu entfernen. Schauen wir uns nun den Code im Detail an.

Zuerst nehmen wir einen binären String als Eingabe und speichern ihn in der String-Variablen „s“. Wir speichern die Größe des Strings auch in einer Integer-Variablen „n“.

string s;
cin >> s;
int n = s.size();
Nach dem Login kopieren

Als nächstes initialisieren wir die Variable „cnt“, um die Anzahl der Nullen in der Zeichenfolge zu speichern. Anschließend iterieren wir mithilfe einer for-Schleife über die Zeichenfolge. Für jede angetroffene Null erhöhen wir die Anzahl der Nullen und prüfen, ob die nächsten beiden Bits ebenfalls Nullen sind. Wenn ja, kehren wir das Bitpaar um, indem wir den Index um 2 erhöhen. Andernfalls spiegeln wir nur benachbarte Bitpaare um, indem wir den Index um 1 erhöhen.

int cnt = 0;
for (int i = 0; i < n; i++) {
   if (s[i] == '0') {
      cnt++;
      if (i+2 < n && s[i+2] == '0') {
         i += 2;
      }
      else {
         i++;
      }
   }
}
Nach dem Login kopieren

Schließlich geben wir die Anzahl der Umdrehungen nicht benachbarter Paare aus, die erforderlich sind, um alle Nullen aus der Zeichenfolge zu entfernen.

cout << cnt << endl;
Nach dem Login kopieren

Testfallbeispiel

Betrachten wir die Binärzeichenfolge „100101000“. Die Mindestanzahl von nicht benachbarten Paarumdrehungen, die erforderlich sind, um alle Nullen aus dieser Zeichenfolge zu entfernen, kann mit dem obigen Algorithmus berechnet werden.

Zuerst treffen wir auf 0 auf Position 2. Wir drehen das (1,3)-Paar um, um die Zeichenfolge „110101000“ zu erhalten. Dann stoßen wir auf die nächste 0 an Position 5. Wir drehen das (1,7)-Paar um, um die Zeichenfolge „111101000“ zu erhalten. Dann stoßen wir auf die nächste 0 an Position 8. Wir drehen das (1,9)-Paar um, um die Zeichenfolge „111111000“ zu erhalten. Jetzt wurden alle Nullen aus der Zeichenfolge entfernt.

Die Anzahl der Umdrehungen nicht benachbarter Paare, die erforderlich sind, um alle Nullen aus einer Zeichenfolge zu entfernen, beträgt 3. Wir können dies überprüfen, indem wir den obigen C++-Code für die Eingabezeichenfolge „100101000“ ausführen.

Fazit

In diesem Artikel haben wir besprochen, wie man die Mindestanzahl nicht benachbarter Paarumdrehungen bestimmt, die erforderlich sind, um alle Nullen aus einer Binärzeichenfolge zu entfernen. Wir verwenden einen einfachen Greedy-Algorithmus, um dieses Problem zu lösen und ihn in C++-Code zu implementieren. Wir stellen auch einen Beispieltestfall zur Verfügung, um die Funktionsweise des Algorithmus zu veranschaulichen.

Das obige ist der detaillierte Inhalt vonMindestanzahl von nicht benachbarten Paarwechseln, die erforderlich sind, um alle Nullen in einer Binärzeichenfolge zu entfernen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So drehen Sie den Bildschirm in Eye of Deep Space um So drehen Sie den Bildschirm in Eye of Deep Space um Mar 22, 2024 pm 10:41 PM

Spieler können den Bildschirm umdrehen, wenn sie das Spiel in Eye of Deep Space spielen. Viele Benutzer wissen nicht, wie sie den Bildschirm umdrehen können. Spieler müssen die Option zur Unterstützung der Bildschirmdrehung im Kontrollzentrum aktivieren und dann zu zurückkehren das Spiel. So drehen Sie den Bildschirm von Deep Space Eye um: 1. Öffnen Sie den Bildschirm Ihres Telefons und streichen Sie mit Ihrem Finger vom unteren Bildschirmrand nach oben. 2. Anschließend können Sie das Kontrollzentrum öffnen. In der oberen rechten Ecke des Kontrollzentrums befindet sich der Schalter zum Ausschalten der Bildschirmrotation. 3. Klicken Sie darauf, um die Bildschirmdrehung zu aktivieren. Zu diesem Zeitpunkt wird das Symbol zur Steuerung der Drehung im Kontrollzentrum hervorgehoben. 4. Wenn Sie eine Anwendung öffnen, die die Bildschirmdrehung unterstützt, dreht sich dieser, wenn sich die Ausrichtung des Telefons ändert.

Methoden und Techniken zum Erzielen eines Bildspiegeleffekts durch reines CSS Methoden und Techniken zum Erzielen eines Bildspiegeleffekts durch reines CSS Oct 20, 2023 am 10:57 AM

Methoden und Techniken zum Erzielen von Bildspiegelungseffekten durch reines CSS. Vorwort: In der Webentwicklung müssen wir Webseiten häufig einige Animationseffekte hinzufügen, um die Benutzererfahrung zu verbessern. Der Spiegeleffekt von Bildern ist einer der häufigsten Effekte. Es ist nicht nur einfach und bequem, das Spiegeln von Bildern über reines CSS zu realisieren, sondern vermeidet auch den zusätzlichen Aufwand, der durch die Verwendung anderer Sprachen wie JavaScript entsteht. In diesem Artikel wird erläutert, wie Sie den Flip-Effekt von Bildern mithilfe von reinem CSS erzielen, und es werden spezifische Codebeispiele bereitgestellt. 1. CSS3-Transfo verwenden

So berechnen Sie die binäre Arithmetik So berechnen Sie die binäre Arithmetik Jan 19, 2024 pm 04:38 PM

Binäre Arithmetik ist eine Operationsmethode, die auf Binärzahlen basiert. Zu ihren Grundoperationen gehören Addition, Subtraktion, Multiplikation und Division. Die binäre Arithmetik umfasst neben Grundoperationen auch logische Operationen, Verschiebungsoperationen und andere Operationen. Zu den logischen Operationen gehören UND, ODER, NICHT und andere Operationen, und Verschiebungsoperationen umfassen Linksverschiebungs- und Rechtsverschiebungsoperationen. Für diese Operationen gelten entsprechende Regeln und Operandenanforderungen.

HTML, CSS und jQuery: Erstellen Sie einen wunderschönen Karten-Flip-Effekt HTML, CSS und jQuery: Erstellen Sie einen wunderschönen Karten-Flip-Effekt Oct 27, 2023 pm 01:43 PM

HTML, CSS und jQuery: Erstellen Sie einen schönen Kartenumdreheffekt. Im Webdesign kann die Anwendung von Spezialeffekten die Interaktivität und die visuellen Effekte der Seite erhöhen. Der Kartenumdreheffekt ist ein häufiger Spezialeffekt, der Benutzern ein lebendigeres und interessanteres Surferlebnis bieten kann. In diesem Artikel wird erläutert, wie Sie mithilfe von HTML, CSS und jQuery einen schönen Kartenumdrehungseffekt erstellen, und es werden spezifische Codebeispiele bereitgestellt. Zuerst müssen wir die Grundstruktur von HTML vorbereiten. Wir werden zwei div-Elemente verwenden, um die Vorderseite der Karte darzustellen

Wie konvertiert man mit der C-Sprache binär in hexadezimal? Wie konvertiert man mit der C-Sprache binär in hexadezimal? Sep 01, 2023 pm 06:57 PM

Binärzahlen werden durch Einsen und Nullen dargestellt. Das 16-Bit-Hexadezimalzahlensystem ist {0,1,2,3…..9,A(10),B(11),…F(15)}, um von der binären Darstellung in eine hexadezimale Darstellung umzuwandeln. Stellt das Bit dar Die Zeichenfolgen-ID ist in 4-Bit-Blöcke gruppiert, sogenannte Nibbles, beginnend mit der niedrigstwertigen Seite. Jeder Block wird durch die entsprechende Hexadezimalzahl ersetzt. Sehen wir uns ein Beispiel an, um ein klares Verständnis der Darstellung hexadezimaler und binärer Zahlen zu erhalten. 001111100101101100011101 3 E 5 B&nb

Was sind die beiden wichtigsten Verbesserungen von EDVAC? Was sind die beiden wichtigsten Verbesserungen von EDVAC? Mar 02, 2023 pm 02:58 PM

EDVAC weist zwei wesentliche Verbesserungen auf: Zum einen die Verwendung von Binärfunktionen und zum anderen die Vervollständigung des gespeicherten Programms, das automatisch von einer Programmanweisung zur nächsten fortschreiten kann und dessen Vorgänge automatisch durch Anweisungen abgeschlossen werden können. „Anweisungen“ umfassen Daten und Programme, die in Form von Codes in das Speichergerät der Maschine eingegeben werden. Das heißt, dasselbe Speichergerät, das Daten speichert, wird zum Speichern von Anweisungen zum Ausführen von Operationen verwendet -sogenannte gespeicherte Programme.

Wie lese ich Binärdateien in Golang? Wie lese ich Binärdateien in Golang? Mar 21, 2024 am 08:27 AM

Wie lese ich Binärdateien in Golang? Binärdateien sind in binärer Form gespeicherte Dateien, die Daten enthalten, die ein Computer erkennen und verarbeiten kann. In Golang können wir einige Methoden verwenden, um Binärdateien zu lesen und sie in das gewünschte Datenformat zu analysieren. Im Folgenden wird das Lesen von Binärdateien in Golang vorgestellt und spezifische Codebeispiele gegeben. Zuerst müssen wir eine Binärdatei mit der Open-Funktion aus dem Betriebssystempaket öffnen, die ein Dateiobjekt zurückgibt. Dann können wir machen

Kann Golang mit Binärdateien umgehen? Kann Golang mit Binärdateien umgehen? Mar 20, 2024 pm 04:36 PM

Kann Golang mit Binärdateien umgehen? In der Go-Sprache ist die Verarbeitung von Binärdateien sehr verbreitet und bequem. Durch die Verwendung integrierter Pakete und Methoden können wir Binärdateien einfach lesen, schreiben und bearbeiten. In diesem Artikel wird der Umgang mit Binärdateien in Go erläutert und spezifische Codebeispiele bereitgestellt. Binärdateien lesen Um eine Binärdatei zu lesen, müssen wir zunächst die Datei öffnen und ein entsprechendes Dateiobjekt erstellen. Wir können dann die Read-Methode verwenden, um die Daten aus der Datei zu lesen und sie in Bytes zu speichern

See all articles