


Rechercher toute permutation qui n'existe pas dans un tableau de chaînes binaires de taille donnée
Dans ce problème, nous devons trouver toutes les chaînes binaires manquantes de longueur N dans un tableau. Nous pouvons résoudre ce problème en recherchant toutes les permutations d’une chaîne binaire de longueur N et en vérifiant quelles permutations n’existent pas dans le tableau. Nous verrons ici des méthodes itératives et récursives pour résoudre ce problème.
Énoncé du problème - Nous avons reçu un tableau arr[] de longueur N contenant des chaînes binaires de différentes longueurs. Nous devons trouver toutes les chaînes binaires manquantes de longueur N dans le tableau.
Exemple Exemple
Entrée – arr = {"111", "001", "100", "110"}, N = 3
Sortie – [000, 010, 011, 101]
Explication – Il existe 8 chaînes binaires de longueur 3, car 2 élevé à la puissance trois est égal à 8. Ainsi, il imprime les 4 chaînes binaires manquantes de longueur 3.
Entrée – str = {'00', '10', '11'}, N = 2
Sortie –[‘01’]
Explication – « 01 » est manquant dans le tableau, il sera donc imprimé dans la sortie.
Méthode 1
Ici, nous utiliserons la méthode itérative pour trouver toutes les chaînes binaires possibles de longueur N. Après cela, nous vérifierons si la chaîne existe dans le tableau. Si elle n'existe pas, nous imprimons la chaîne.
Algorithme
Définissez la collection et utilisez la méthode insert() pour ajouter toutes les chaînes du tableau à la collection.
Initialisez la variable total avec 2N, où 2N est le nombre total de chaînes de longueur N
Définissez la variable 'cnt' et initialisez-la à zéro pour stocker le nombre total de combinaisons manquantes.
Utilisez une boucle pour effectuer le nombre « total » d'itérations afin de trouver toutes les chaînes binaires de longueur N.
Dans la boucle, initialisez la variable chaîne "num" avec une chaîne vide.
Utilisez des boucles imbriquées pour un total de N itérations et à partir de la dernière itération, créez une chaîne de longueur N.
Utilisez la méthode find() pour vérifier si la collection contient la chaîne actuelle. Si tel est le cas, augmentez la valeur de « cnt » de 1.
Si la chaîne n'est pas dans la carte, imprimez-la pour l'afficher dans la sortie
Si la valeur de "cnt" est égale au nombre total, cela signifie que toutes les chaînes de longueur N existent dans le tableau et "-1" est imprimé.
Exemple
#include <bits/stdc++.h> using namespace std; // function to print missing combinations of a binary string of length N in an array void printMissingCombinations(vector<string> &arr, int N) { unordered_set<string> set; // insert all the strings in the set for (string temp : arr) { set.insert(temp); } // get total combinations for the string of length N int total = (int)pow(2, N); // To store combinations that are present in an array int cnt = 0; // find all the combinations for (int p = 0; p < total; p++) { // Initialize empty binary string string bin = ""; for (int q = N - 1; q >= 0; q--) { // If the qth bit is set, append '1'; append '0'. if (p & (1 << q)) { bin += '1'; } else { bin += '0'; } } // If the combination is present in an array, increment cnt if (set.find(bin) != set.end()) { cnt++; continue; } else { cout << bin << ", "; } } // If all combinations are present in an array, print -1 if (cnt == total) { cout << "-1"; } } int main() { int N = 3; vector<string> arr = {"111", "001", "100", "110"}; printMissingCombinations(arr, N); return 0; }
Sortie
000, 010, 011, 101,
Complexité temporelle - O(N*2N), où O(N) est utilisé pour vérifier si la chaîne existe dans le tableau et O(2N) est utilisé pour trouver toutes les permutations possibles.
Complexité spatiale - O(N) car nous utilisons set pour stocker les chaînes.
Méthode 2
Dans cette méthode, nous montrons en utilisant la méthode récursive pour trouver toutes les chaînes binaires possibles de longueur N.
Algorithme
Définissez une collection et insérez toutes les valeurs du tableau dans la collection.
Appelez la fonction generateCombinations() pour générer toutes les combinaisons de chaînes binaires
Définissez le cas de base dans la fonction generateCombinations(). Si l'index est égal à N, alors currentCombination est ajouté à la liste.
Après avoir ajouté « 0 » ou « 1 » à la combinaison actuelle, appelez la fonction generateCombinations() de manière récursive.
Après avoir obtenu toutes les combinaisons, vérifiez quelles combinaisons sont présentes dans le tableau et lesquelles ne le sont pas. Imprimez également les combinaisons manquantes à afficher dans la sortie.
Exemple
#include <bits/stdc++.h> using namespace std; // Function to generate all possible combinations of binary strings void generateCombinations(int index, int N, string currentCombination, vector<string> &combinations) { // Base case: if we have reached the desired length N, add the combination to the vector if (index == N) { combinations.push_back(currentCombination); return; } // Recursively generate combinations by trying both 0 and 1 at the current index generateCombinations(index + 1, N, currentCombination + "0", combinations); generateCombinations(index + 1, N, currentCombination + "1", combinations); } // function to print missing combinations of a binary string of length N in an array void printMissingCombinations(vector<string> &arr, int N) { unordered_set<string> set; // insert all the strings in the set for (string str : arr) { set.insert(str); } // generating all combinations of binary strings of length N vector<string> combinations; generateCombinations(0, N, "", combinations); // Traverse all the combinations and check if it is present in the set or not for (string str : combinations) { // If the combination is not present in the set, print it if (set.find(str) == set.end()) { cout << str << endl; } } return; } int main(){ int N = 3; vector<string> arr = {"111", "001", "100", "110"}; printMissingCombinations(arr, N); return 0; }
Sortie
000 010 011 101
Complexité temporelle - O(N*2N)
Complexité spatiale - O(2N) puisque nous stockons toutes les combinaisons dans un tableau.
Les deux méthodes utilisent la même logique pour résoudre le problème. La première méthode utilise une technique itérative pour trouver toutes les combinaisons de chaînes binaires de longueur N, ce qui est plus rapide que la technique récursive utilisée dans la seconde méthode. De plus, la deuxième méthode consomme plus d’espace que la première méthode.
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

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

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)

Avec la popularité des crypto-monnaies, des plateformes de trading de devises virtuelles ont émergé. Les dix principales plateformes de trading de devises virtuelles au monde sont classées comme suit selon le volume des transactions et la part de marché: Binance, Coinbase, FTX, Kucoin, Crypto.com, Kraken, Huobi, Gate.io, Bitfinex, Gemini. Ces plateformes offrent un large éventail de services, allant d'un large éventail de choix de crypto-monnaie à la négociation des dérivés, adapté aux commerçants de niveaux différents.

Il existe de nombreuses façons de centrer des photos de bootstrap, et vous n'avez pas à utiliser Flexbox. Si vous avez seulement besoin de centrer horizontalement, la classe de cent texte est suffisante; Si vous devez centrer verticalement ou plusieurs éléments, Flexbox ou Grid convient plus. Flexbox est moins compatible et peut augmenter la complexité, tandis que Grid est plus puissant et a un coût d'enseignement supérieur. Lorsque vous choisissez une méthode, vous devez peser les avantages et les inconvénients et choisir la méthode la plus appropriée en fonction de vos besoins et préférences.

Comment ajuster l'échange ouvert en sésame en chinois? Ce didacticiel couvre des étapes détaillées sur les ordinateurs et les téléphones mobiles Android, de la préparation préliminaire aux processus opérationnels, puis à la résolution de problèmes communs, vous aidant à changer facilement l'interface d'échange Open Sesame aux chinois et à démarrer rapidement avec la plate-forme de trading.

Les dix principales plates-formes de trading de crypto-monnaie comprennent: 1. Okx, 2. Binance, 3. Gate.io, 4. Kraken, 5. Huobi, 6. Coinbase, 7. Kucoin, 8. Crypto.com, 9. BitFinex, 10. Gemini. La sécurité, la liquidité, les frais de traitement, la sélection des devises, l'interface utilisateur et le support client doivent être pris en compte lors du choix d'une plate-forme.

Top dix plates-formes de trading de devises virtuelles 2025: 1. Okx, 2. Binance, 3. Gate.io, 4. Kraken, 5. Huobi, 6. Coinbase, 7. Kucoin, 8. Crypto.com, 9. BitFinex, 10. Gemini. La sécurité, la liquidité, les frais de traitement, la sélection des devises, l'interface utilisateur et le support client doivent être pris en compte lors du choix d'une plate-forme.

Le calcul de C35 est essentiellement des mathématiques combinatoires, représentant le nombre de combinaisons sélectionnées parmi 3 des 5 éléments. La formule de calcul est C53 = 5! / (3! * 2!), Qui peut être directement calculé par des boucles pour améliorer l'efficacité et éviter le débordement. De plus, la compréhension de la nature des combinaisons et la maîtrise des méthodes de calcul efficaces est cruciale pour résoudre de nombreux problèmes dans les domaines des statistiques de probabilité, de la cryptographie, de la conception d'algorithmes, etc.

L'algorithme adaptatif de la position de l'axe y pour la fonction d'annotation Web Cet article explorera comment implémenter des fonctions d'annotation similaires aux documents de mots, en particulier comment gérer l'intervalle entre les annotations ...

Une plate-forme de monnaie numérique sûre et fiable: 1. Okx, 2. Binance, 3. Gate.io, 4. Kraken, 5. Huobi, 6. Coinbase, 7. Kucoin, 8. Crypto.com, 9. Bitfinex, 10. Gemini. La sécurité, la liquidité, les frais de traitement, la sélection des devises, l'interface utilisateur et le support client doivent être pris en compte lors du choix d'une plate-forme.
