


Teilen Sie eine bestimmte Binärzeichenfolge basierend auf einer bestimmten Bedingung mit C++ auf, um die Summe zu maximieren
Dieser Artikel zielt darauf ab, ein komplexes algorithmisches Problem zu lösen, bei dem es darum geht, eine Binärzeichenfolge so aufzuteilen, dass die kumulative Summe aus ihren einzelnen Komponenten maximiert wird. Wir stellen dem Leser eine umfassende Syntaxübersicht für die Implementierung des Codes zur Verfügung und schlagen zwei mögliche Techniken zur Bewältigung dieser Herausforderung vor. Darüber hinaus zeigen wir zwei echte, vollständig ausführbare Codes, die auf der oben genannten Methode basieren.
Grammatik
Bevor wir uns mit dem Algorithmus befassen, ist es wichtig, dass wir uns mit der Struktur der angegebenen Methode vertraut machen, die wir anhand der kommenden Codebeispiele demonstrieren werden. Diese Methode verwendet eine Binärzeichenfolge als Eingabe und berechnet ihren höchstmöglichen Wert durch Partitionierung dieser Eingabe unter Verwendung vorgegebener Bedingungen. So sieht dieser Ansatz syntaktisch aus –
int maximizeSum(string binaryString) { // Implementation of the algorithm goes here }
Algorithmus
Jetzt sollten wir den schrittweisen Algorithmus diskutieren, um das Problem der Maximierung der Summe durch Aufteilen einer Binärzeichenfolge zu lösen.
Codeausschnitt 1
Initialisieren Sie die beiden Variablen „maxSum“ und „currentSum“, beide auf Null gesetzt.
Durchlaufen Sie eine Binärzeichenfolge von links nach rechts.
Für jedes Zeichen in der Zeichenfolge -
Wenn das Zeichen „0“ ist, fügen Sie es der aktuellen Teilzeichenfolge hinzu.
Wenn das Zeichen „1“ ist −
Aktualisieren Sie „maxSum“, indem Sie die aktuelle „currentSum“ hinzufügen.
Setzen Sie „currentSum“ auf Null zurück.
Nachdem die Durchquerung abgeschlossen ist, fügen Sie die endgültige „currentSum“ und „maxSum“ hinzu.
Gib „maxSum“ als Ergebnis zurück.
Methode 1
Der erste Weg, dieses Problem zu lösen, besteht darin, den oben genannten Algorithmus zu implementieren. Schauen wir uns das entsprechende Code-Snippet an -
Beispiel
#include <iostream> #include <string> using namespace std; int maximizeSum(string binaryString) { int maxSum = 0; int currentSum = 0; for (char c : binaryString) { if (c == '0') { currentSum = currentSum * 10 + (c - '0'); } else { maxSum += currentSum; currentSum = 0; } } maxSum += currentSum; return maxSum; } int main() { string binaryString = "1001101001"; int result = maximizeSum(binaryString); cout << "Maximum sum: " << result << endl; return 0; }
Ausgabe
Maximum sum: 0
Anleitung
Der Einfachheit halber enthält der Code zunächst die erforderlichen Bibliotheken („iostream“ und „string“) und verwendet den Namespace „std“.
Um die maximal erreichbare Summe durch Aufteilen einer Binärzeichenfolge zu berechnen, können Sie die Funktion „maximizeSum“ verwenden, die eine Binärzeichenfolge als Eingabe verwendet und die Ausgabe zurückgibt.
Zwei Variablen werden innerhalb dieser Funktion initialisiert – „maxSum“ und „currentSum“. Ersteres verfolgt den bisher erreichten Maximalwert, während letzteres die Summe jedes einzelnen Teilstrings berechnet.
Mit einer bereichsbasierten for-Schleife iterieren wir über jedes Zeichen „c“ in der Eingabe „binaryString“.
Wenn das aktuelle Zeichen „c“ „0“ ist, multiplizieren wir es mit 10 und addieren den Wert „0“, um „currentSum“ zu aktualisieren. Dadurch wird effektiv „0“ an den aktuellen Teilstring angehängt.
Wenn das aktuelle Zeichen „c“ „1“ ist, bedeutet dies, dass die aktuelle Teilzeichenfolge endet. Wir fügen „currentSum“ zu „maxSum“ hinzu, um die bisher erreichte Maximalsumme zu aktualisieren, und setzen dann „currentSum“ auf Null zurück, um einen neuen Teilstring zu beginnen.
Nach Abschluss der Schleife wird sie berechnet, indem die „currentSum“ des letzten Teilstrings zur vorherigen „maxSum“ addiert wird. Die Funktion „main“ stellt eine Eingabeaufforderung bereit, die es dem Benutzer ermöglicht, eine Binärzeichenfolge einzugeben.
Die Funktion „main“ stellt eine Eingabeaufforderung bereit, die es dem Benutzer ermöglicht, eine Binärzeichenfolge einzugeben.
Die Eingabezeichenfolge wird an die Funktion „maximizeSum“ übergeben und die zurückgegebene Maximalsumme wird in der Variablen „result“ gespeichert.
Abschließend wird dem Nutzer die maximale Summe angezeigt.
Methode 2
Im zweiten Ansatz optimieren wir den Code, indem wir die Notwendigkeit einer Ganzzahlmultiplikation überflüssig machen. Stattdessen verwenden wir bitweise Operationen, um die aktuelle Summe zu berechnen. Werfen wir einen Blick auf den Codeausschnitt dieses Ansatzes -
Beispiel
#include <iostream> #include <string> using namespace std; int maximizeSum(string binaryString) { int maxSum = 0; int currentSum = 0; for (char c : binaryString) { if (c == '0') { currentSum = (currentSum << 1) + 0; } else { maxSum += currentSum; currentSum = 0; } } maxSum += currentSum; return maxSum; } int main() { string binaryString = "10110010"; // Assumed binary string int result = maximizeSum(binaryString); cout << "Maximum sum: " << result << endl; return 0; }
Ausgabe
Maximum sum: 0
Anleitung
Ähnlich wie bei der ersten Methode enthält der Code zunächst die erforderlichen Bibliotheken und verwendet den Namensraum „std“.
Die Definitionen der Funktion „maximizeSum“ und der Funktion „main“ sind die gleichen wie in der ersten Methode.
Verwenden Sie in der Funktion „maximizeSum“ den Bit-Linksverschiebungsoperator („
Entspricht einer Multiplikation mit 2. Dann addieren wir 0 zu „currentSum“, da das aktuelle Zeichen „0“ ist.
Der Rest des Codes ist bei beiden Methoden gleich. Als Eingabe erhalten sie einen Binärstring. Verwenden Sie die Funktion „maximizeSum“, um die maximal mögliche Summe beim Teilen einer Zeichenfolge zu berechnen. Dieses Ergebnis wird dann dem Benutzer präsentiert.
Sie können diese Codes im C++-Compiler kompilieren und ausführen. Wenn eine Binärzeichenfolge eingegeben wird, gibt das Programm die maximale Summe aus, die durch Teilen der Zeichenfolge gemäß den angegebenen Bedingungen erhalten wird.
Fazit
In diesem Artikel untersuchen wir das Problem der Maximierung der Summe durch Aufteilen einer Binärzeichenfolge basierend auf einer bestimmten Bedingung. Wir stellen die Syntax der im Codebeispiel verwendeten Methode bereit und schlagen zwei Möglichkeiten zur Lösung des Problems vor. Ursprünglich wurde direkte Arithmetik verwendet, während die folgenden Techniken die Codierung durch bitweise Operationen optimieren. Obwohl beide Methoden das Problem erfolgreich lösen, bietet letztere eine höhere Effizienz, da keine ganzzahlige Multiplikation erforderlich ist. Durch das Verständnis und die Implementierung dieser Algorithmen können Sie ähnliche Probleme effizient lösen, bei denen es um die Maximierung einer Summe durch Aufteilen einer Binärzeichenfolge geht.
Das obige ist der detaillierte Inhalt vonTeilen Sie eine bestimmte Binärzeichenfolge basierend auf einer bestimmten Bedingung mit C++ auf, um die Summe zu maximieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





Schneller Einstieg: JSON-Array-Zusammenführungs- und Aufteilungstechniken in Java In der modernen Softwareentwicklung sind Datenformat und -übertragung immer wichtiger geworden. Unter diesen ist JSON (JavaScriptObjectNotation) ein häufig verwendetes Datenformat, das sich besonders für Front-End- und Back-End-Interaktion und Datenspeicherung eignet. In der Java-Entwicklung müssen wir uns häufig mit JSON-Objekten und JSON-Arrays befassen. In diesem Artikel wird erläutert, wie Sie JSON-Arrays in Java zusammenführen und aufteilen, sowie Tipps und Beispiele für die Implementierung dieser Vorgänge.

Wie verwende ich PHPZipArchive, um mehrere komprimierte Pakete zusammenzuführen und aufzuteilen? Überblick: Während des Entwicklungsprozesses müssen wir manchmal mehrere komprimierte Pakete zu einem zusammenführen oder ein komprimiertes Paket in mehrere aufteilen. PHP bietet die ZipArchive-Erweiterung, um diese Vorgänge einfach durchzuführen. In diesem Artikel wird erläutert, wie Sie mit PHPZipArchive mehrere komprimierte Pakete zusammenführen und aufteilen. Mehrere Archive zusammenführen Zuerst müssen wir ein neues Archiv erstellen und es öffnen. Dann muss die Schleife durchlaufen werden

Bei diesem Problem müssen wir die längste nicht zunehmende Teilfolge einer gegebenen Zeichenfolge finden. Nicht aufsteigend bedeutet, dass die Zeichen entweder gleich oder in absteigender Reihenfolge sind. Da Binärzeichenfolgen nur „0“ und „1“ enthalten, sollte die resultierende Zeichenfolge entweder mit „1“ beginnen und mit „0“ enden oder mit „0“ oder „1“ beginnen und enden. Um dieses Problem zu lösen, zählen wir das Präfix „1“ und das Suffix „0“ an jeder Position der Zeichenfolge und ermitteln die maximale Summe aus Präfix „1“ und Suffix „0“. Problemstellung: Wir erhalten eine binäre Zeichenfolge str. Wir müssen die längste nicht zunehmende Teilsequenz aus der gegebenen Zeichenfolge finden. Beispiel Input–str="010100"Output–4 veranschaulicht die längste nicht-rekursive Methode

Die Funktion pack() packt Daten in eine Binärzeichenfolge. Syntax pack(format,args) Parameter format – das zu verwendende Format. Die folgenden Werte sind möglich: a – mit NUL aufgefüllte Zeichenfolge A – mit Leerzeichen aufgefüllte Zeichenfolge h – hexadezimale Zeichenfolge, niedriges Nibble zuerst H – hexadezimale Zeichenfolge, hohes Nibble zuerst c – vorzeichenbehaftetes Zeichen C – vorzeichenloses Zeichen s – vorzeichenbehaftetes Kurzzeichen (immer 16 Bit). , Maschinenbyte-Reihenfolge) S – unsigned short (immer 16 Bit, Maschinenbyte-Reihenfolge) n – unsigned short (immer 16 Bit, Big-Endian-Bytereihenfolge) v – unsigned short (immer 16 Bit, Little-Endian-Bytereihenfolge) i – vorzeichenbehaftete Ganzzahl (hängt von der Maschinengröße und der Byte-Reihenfolge ab) I – Keine vorzeichenbehaftete Ganzzahl (abhängig von

In der gegebenen Aufgabe erhalten wir eine Zeichenfolge bestehend aus 0 und 1; wir müssen die Gesamtzahl aller Permutationen ermitteln, die mit 1 beginnen. Da die Antwort eine große Zahl sein kann, nehmen wir sie modulo 1000000007 und geben sie aus. Input:str="10101001001"Output:210Input:str="101110011"Output:56 Wir werden dieses Problem lösen, indem wir kombinatorische Mathematik anwenden und einige Formeln aufstellen. Lösungsmethode Bei dieser Methode zählen wir die Anzahl der Nullen und Einsen. Angenommen, n ist die Anzahl der Einsen, die in unserer Zeichenfolge erscheinen, und m ist die Anzahl der Nullen, die in unserer Zeichenfolge erscheinen

Python ist eine beliebte High-Level-Programmiersprache, die sehr praktisch und flexibel ist. Beim Schreiben von Schleifen in Python stößt man jedoch manchmal auf das Problem falscher Schleifenbedingungen. In diesem Artikel werden die Ursachen und Lösungen von Schleifenbedingungsfehlern in Python vorgestellt. 1. Ursachen für Schleifenzustandsfehler Schleifenzustandsfehler werden normalerweise durch Fehler in Variablenwerten oder Logikfehler verursacht. Die spezifische Leistung ist: Die Variable wird nicht korrekt aktualisiert. Wenn die Variablen in der Schleife nicht korrekt aktualisiert werden, bleibt die Schleifenbedingung immer gleich. Der bedingte Ausdruck ist fehlerhaft. if-Klausel

Problemstellung: Wir haben einen String str und einen binären String B. Die Länge beider Saiten ist gleich N. Wir müssen prüfen, ob wir String str zu einem Palindrom-String machen können, indem wir seine Zeichen mehrmals auf jedem Indexpaar austauschen, das ungleiche Zeichen in String B enthält. Beispiel Beispiel Eingabe str='AAS' B='101' Ausgabe 'JA' Die chinesische Übersetzung von Erläuterung lautet: Erläuterung Wir können str[1] und str[2] austauschen, da B[1] und B[2] nicht gleich sind . Die letzte Zeichenfolge kann „ASA“ sein. Eingabe str='AASS' B='1111' und Ausgabe 'Nein'. Die chinesische Übersetzung von Erklärung lautet: Erklärung, dass wir den String nicht palindromieren können,

Umgang mit den Rechnungsteilungs- und Zusammenführungsfunktionen des Buchhaltungssystems – Wie man Rechnungen mit PHP aufteilt und zusammenführt Einführung: Im täglichen Leben stoßen wir häufig auf Situationen, in denen wir Rechnungen aufteilen und zusammenführen müssen, insbesondere in einem Buchhaltungssystem. Im System Diese beiden Funktionen sind sehr häufig und wichtig. In diesem Artikel wird erläutert, wie Sie mit PHP die Funktionen zum Teilen und Zusammenführen von Rechnungen im Buchhaltungssystem implementieren, und es werden spezifische Codebeispiele bereitgestellt. 1. Implementierung der Funktion „Geteilte Rechnung“ Unter „Geteilte Rechnung“ versteht man den Vorgang der Aufteilung der ursprünglichen Rechnung in mehrere Unterrechnungen. Jede Unterrechnung enthält einen Teil davon
