


Divisez une chaîne binaire donnée en fonction d'une condition donnée en utilisant C++ pour maximiser la somme
Cet article vise à résoudre un problème algorithmique complexe impliquant la division d'une chaîne binaire de manière à maximiser la somme cumulée obtenue à partir de ses composants individuels. Nous fournirons au lecteur un aperçu syntaxique complet pour implémenter le code et suggérerons deux techniques possibles pour surmonter ce défi. De plus, nous montrerons deux vrais codes exécutables complets basés sur la méthode ci-dessus.
Grammaire
Avant d'approfondir l'algorithme, il est crucial que nous nous familiarisions avec la structure de la méthode spécifiée que nous démontrerons à travers les prochains exemples de code. Cette méthode prend une chaîne binaire en entrée et calcule sa valeur la plus élevée possible en partitionnant ladite entrée en utilisant des conditions prédéterminées. Voici à quoi ressemble cette approche syntaxiquement -
int maximizeSum(string binaryString) { // Implementation of the algorithm goes here }
Algorithme
Nous devrions maintenant discuter de l'algorithme pas à pas pour résoudre le problème de la maximisation de la somme en divisant une chaîne binaire.
Extrait de code 1
Initialisez les deux variables "maxSum" et "currentSum", toutes deux mises à zéro.
Traversez une chaîne binaire de gauche à droite.
Pour chaque caractère de la chaîne -
Si le caractère est « 0 », ajoutez-le à la sous-chaîne actuelle.
Si le caractère est '1' −
Mettez à jour "maxSum" en ajoutant le "currentSum" actuel.
Réinitialisez `currentSum` à zéro.
Une fois le parcours terminé, ajoutez les "currentSum" et "maxSum" finaux.
Renvoyer `maxSum` comme résultat.
Méthode 1
La première façon de résoudre ce problème consiste à implémenter l'algorithme ci-dessus. Regardons l'extrait de code correspondant -
Exemple
#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; }
Sortie
Maximum sum: 0
Instructions
Pour plus de commodité, le code inclut d'abord les bibliothèques nécessaires ("iostream" et "string") et utilise l'espace de noms "std".
Pour calculer la somme maximale réalisable en divisant une chaîne binaire, vous pouvez utiliser la fonction `maximizeSum`, qui prend une chaîne binaire en entrée et renvoie la sortie.
Deux variables sont initialisées à l'intérieur de cette fonction - `maxSum` et `currentSum`. Le premier garde une trace de la valeur maximale atteinte jusqu'à présent, tandis que le second calcule la somme de chaque sous-chaîne individuelle.
À l'aide d'une boucle for basée sur une plage, nous parcourons chaque caractère "c" dans l'entrée "binaryString".
Si le caractère actuel "c" est "0", nous le multiplions par 10 et ajoutons la valeur "0" pour mettre à jour "currentSum". Cela ajoute effectivement "0" à la sous-chaîne actuelle.
Si le caractère actuel "c" est "1", cela signifie que la sous-chaîne actuelle se termine. Nous ajoutons `currentSum` à `maxSum` pour mettre à jour la somme maximale atteinte jusqu'à présent, puis réinitialisons `currentSum` à zéro pour démarrer une nouvelle sous-chaîne.
Après avoir terminé la boucle, elle est calculée en ajoutant le « currentSum » de la dernière sous-chaîne au « maxSum » précédent. La fonction « main » fournit une invite qui permet à l'utilisateur de saisir une chaîne binaire.
La fonction "main" fournit une invite qui permet à l'utilisateur de saisir une chaîne binaire.
La chaîne d'entrée est transmise à la fonction `maximizeSum` et la somme maximale renvoyée est stockée dans la variable `result`.
Enfin, la somme maximale est affichée à l'utilisateur.
Méthode 2
Dans la deuxième approche, nous optimiserons le code en éliminant le besoin d'effectuer une multiplication d'entiers. Au lieu de cela, nous utiliserons des opérations au niveau du bit pour calculer la somme actuelle. Jetons un coup d'œil à l'extrait de code de cette approche -
Exemple
#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; }
Sortie
Maximum sum: 0
Instructions
Semblable à la première méthode, le code inclut d'abord les bibliothèques nécessaires et utilise l'espace de noms `std`.
Les définitions de la fonction `maximizeSum` et de la fonction `main` sont les mêmes que celles de la première méthode.
Dans la fonction `maximizeSum`, utilisez l'opérateur de décalage vers la gauche (`
Équivaut à multiplier par 2. Ensuite, nous ajoutons 0 à `currentSum` puisque le caractère actuel est "0".
Le reste du code est le même dans les deux méthodes. Ils reçoivent une chaîne binaire en entrée. Utilisez la fonction `maximizeSum` pour calculer la somme maximale possible lors du fractionnement d'une chaîne. Ce résultat est ensuite présenté à l'utilisateur.
Vous pouvez compiler et exécuter ces codes dans le compilateur C++ Lorsqu'une chaîne binaire est entrée, le programme affichera la somme maximale obtenue en divisant la chaîne selon les conditions spécifiées.
Conclusion
Dans cet article, nous explorons le problème de la maximisation de la somme en divisant une chaîne binaire en fonction d'une condition donnée. Nous fournissons la syntaxe de la méthode utilisée dans l'exemple de code et proposons deux manières de résoudre le problème. Initialement, l'arithmétique directe a été utilisée, tandis que les techniques suivantes optimisent le codage via des opérations au niveau du bit. Bien que les deux méthodes résolvent le problème avec succès, la dernière offre une plus grande efficacité car elle élimine le besoin de multiplication d’entiers. En comprenant et en mettant en œuvre ces algorithmes, vous pouvez résoudre efficacement des problèmes similaires impliquant la maximisation d'une somme en divisant une chaîne binaire.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Commencez rapidement : techniques de fusion et de division de tableaux JSON en Java Dans le développement de logiciels modernes, le format et la transmission des données sont devenus de plus en plus importants. Parmi eux, JSON (JavaScriptObjectNotation) est un format de données couramment utilisé, particulièrement adapté à l'interaction front-end et back-end et au stockage de données. Dans le développement Java, nous devons souvent gérer des objets JSON et des tableaux JSON. Cet article explique comment fusionner et diviser des tableaux JSON en Java, ainsi que des conseils et des exemples pour implémenter ces opérations.

Comment utiliser PHPZipArchive pour fusionner et diviser plusieurs packages compressés ? Présentation : Au cours du processus de développement, nous devons parfois fusionner plusieurs packages compressés en un seul, ou diviser un package compressé en plusieurs. PHP fournit l'extension ZipArchive pour réaliser facilement ces opérations. Cet article explique comment utiliser PHPZipArchive pour fusionner et diviser plusieurs packages compressés. Fusionner plusieurs archives Tout d'abord, nous devons créer une nouvelle archive et l'ouvrir. Ensuite, le parcours de la boucle doit être

Dans ce problème, nous devons trouver la sous-séquence non croissante la plus longue d’une chaîne donnée. Non croissant signifie que les caractères sont identiques ou classés par ordre décroissant. Étant donné que les chaînes binaires ne contiennent que « 0 » et « 1 », la chaîne résultante doit soit commencer par « 1 » et se terminer par « 0 », soit commencer et se terminer par « 0 » ou « 1 ». Pour résoudre ce problème, nous allons compter le préfixe « 1 » et le suffixe « 0 » à chaque position de la chaîne et trouver la somme maximale du préfixe « 1 » et du suffixe « 0 ». Énoncé du problème - On nous donne une chaîne binaire str. Nous devons trouver la sous-séquence non croissante la plus longue de la chaîne donnée. Exemple Input–str="010100"Output–4 illustre le plus long fichier non récursif

Dans le problème donné, on nous donne une chaîne composée de 0 et 1 ; nous devons trouver le nombre total de toutes les permutations commençant par 1. Puisque la réponse peut être un nombre énorme, nous la prenons modulo 1000000007 et la produisons. Input:str="10101001001"Output:210Input:str="101110011"Output:56 Nous allons résoudre ce problème en appliquant des mathématiques combinatoires et en mettant en place des formules. Méthode de solution Dans cette méthode, nous compterons le nombre de 0 et de 1. Supposons maintenant que n soit le nombre de 1 qui apparaissent dans notre chaîne et que m soit le nombre de 0 qui apparaissent dans notre chaîne.

La fonction pack() regroupe les données dans une chaîne binaire. Syntaxe pack(format,args) Format des paramètres - le format à utiliser. Voici les valeurs possibles - a - chaîne remplie NUL A - chaîne remplie d'espaces h - chaîne hexadécimale, petit quartet en premier H - chaîne hexadécimale, haut quartet en premier c - caractère signé C - caractère non signé s - court signé (toujours 16 bits , ordre des octets machine) S - court non signé (toujours 16 bits, ordre des octets machine) n - court non signé (toujours 16 bits, ordre des octets big endian) v - court non signé (toujours 16 bits, ordre des octets small endian) i - entier signé (dépend de la taille de la machine et de l'ordre des octets) I - Aucun entier signé (en fonction de

Python est un langage de programmation de haut niveau populaire, très pratique et flexible. Cependant, lors de l’écriture de boucles en Python, vous rencontrez parfois le problème de conditions de boucle incorrectes. Cet article présentera les causes et les solutions des erreurs de condition de boucle en Python. 1. Causes des erreurs de condition de boucle Les erreurs de condition de boucle sont généralement causées par des erreurs dans les valeurs des variables ou des erreurs logiques. La performance spécifique est la suivante : la variable n'est pas mise à jour correctement. Si les variables de la boucle ne sont pas mises à jour correctement, la condition de la boucle restera toujours la même. L'expression conditionnelle est mal formée. si clause

Comment gérer les fonctions de fractionnement et de fusion de factures du système comptable - Comment diviser et fusionner des factures à l'aide de PHP Introduction : Dans la vie quotidienne, nous rencontrons souvent des situations où nous devons diviser et fusionner des factures, notamment dans un système comptable Dans le système, ces deux fonctions sont très courantes et importantes. Cet article explique comment utiliser PHP pour implémenter les fonctions de fractionnement et de fusion de factures dans le système comptable et fournit des exemples de code spécifiques. 1. Implémentation de la fonction de fractionnement de facture La facture fractionnée fait référence au processus de fractionnement de la facture originale en plusieurs sous-factures. Chaque sous-facture contient une partie de.

Énoncé du problème Nous avons une chaîne str et une chaîne binaire B. La longueur des deux chaînes est égale à N. Nous devons vérifier si nous pouvons faire de la chaîne str une chaîne palindrome en échangeant ses caractères plusieurs fois sur n'importe quelle paire d'index contenant des caractères inégaux dans la chaîne B. Exemple Exemple Entrée str='AAS' B='101' Sortie 'YES' La traduction chinoise de Explication est : Explication Nous pouvons échanger str[1] et str[2] car B[1] et B[2] ne sont pas égaux . La chaîne finale peut être « ASA ». Entrée str='AASS' B='1111' et sortie 'No'. La traduction chinoise de l'explication est : Explication que nous ne pouvons pas créer le palindrome de chaîne,
