Table des matières
Grammaire
Algorithme
Extrait de code 1
Méthode 2
Exemple
Sortie
Instructions
Conclusion
Maison développement back-end C++ Divisez une chaîne binaire donnée en fonction d'une condition donnée en utilisant C++ pour maximiser la somme

Divisez une chaîne binaire donnée en fonction d'une condition donnée en utilisant C++ pour maximiser la somme

Sep 04, 2023 am 10:21 AM
条件 拆分 chaîne binaire

Divisez une chaîne binaire donnée en fonction dune 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
}
Copier après la connexion

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

Sortie

Maximum sum: 0
Copier après la connexion
Copier après la connexion

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

Sortie

Maximum sum: 0
Copier après la connexion
Copier après la connexion

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Commencez rapidement : techniques de fusion et de fractionnement de tableaux JSON en Java. Commencez rapidement : techniques de fusion et de fractionnement de tableaux JSON en Java. Sep 06, 2023 am 10:21 AM

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 PHP ZipArchive pour fusionner et diviser plusieurs packages compressés ? Comment utiliser PHP ZipArchive pour fusionner et diviser plusieurs packages compressés ? Jul 21, 2023 am 10:17 AM

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

Sous-séquence non croissante la plus longue dans une chaîne binaire Sous-séquence non croissante la plus longue dans une chaîne binaire Sep 07, 2023 pm 11:13 PM

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

Écrit en C++, trouvez le nombre de permutations uniques d'une chaîne binaire commençant par 1 Écrit en C++, trouvez le nombre de permutations uniques d'une chaîne binaire commençant par 1 Sep 05, 2023 am 09:01 AM

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.

En PHP, la fonction pack() a pour fonction de convertir les données en chaîne binaire En PHP, la fonction pack() a pour fonction de convertir les données en chaîne binaire Aug 31, 2023 pm 02:05 PM

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

Comment résoudre l'erreur de condition de boucle de Python ? Comment résoudre l'erreur de condition de boucle de Python ? Jun 24, 2023 pm 07:50 PM

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 implémenter le fractionnement et la fusion de factures à l'aide de PHP Comment gérer les fonctions de fractionnement et de fusion de factures du système comptable - Comment implémenter le fractionnement et la fusion de factures à l'aide de PHP Sep 25, 2023 am 09:54 AM

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.

Vérifie si une chaîne peut former une chaîne palindrome en échangeant des paires de caractères au niveau des indices avec des caractères inégaux dans une chaîne binaire Vérifie si une chaîne peut former une chaîne palindrome en échangeant des paires de caractères au niveau des indices avec des caractères inégaux dans une chaîne binaire Sep 02, 2023 pm 08:09 PM

É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,

See all articles