国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Table des matières
Ensembles de caractères et couches: générer efficacement des permutations uniques
Maison développement back-end tutoriel php Comment générer une combinaison de permutation qui ne se répète pas et ne fait pas de caractères identiques contigus basés sur un jeu de caractères donné et un nombre de couches?

Comment générer une combinaison de permutation qui ne se répète pas et ne fait pas de caractères identiques contigus basés sur un jeu de caractères donné et un nombre de couches?

Apr 01, 2025 am 06:18 AM
python git arrangement

Comment générer une combinaison de permutation qui ne se répète pas et ne fait pas de caractères identiques contigus basés sur un jeu de caractères donné et un nombre de couches?

Ensembles de caractères et couches: générer efficacement des permutations uniques

Cet article explore comment générer une combinaison de permutation sans doublons et sans caractères identiques consécutifs basés sur un jeu de caractères donné et un nombre de couches. Par exemple, le jeu de caractères {a, b}, la combinaison de permutation à trois couches doit contenir AAB, ABA, ABB, BAA, BAB, BBA, etc., mais pas AAA, BBB et d'autres caractères répétés consécutifs. Cela nécessite des algorithmes pour gérer la déduplication et éviter la duplication continue des caractères.

Le défi de base consiste à concevoir un algorithme qui peut s'adapter à différents jeux de caractères et couches et générer efficacement des permutations qui répondent aux critères. Cet article introduira deux méthodes: la méthode de remplacement numérique et la méthode de retournement.

Méthode 1: Méthode de remplacement numérique

Cette méthode traite la combinaison de permutation comme un numéro de chiffre M (m est la taille du jeu de caractères). Par exemple, le jeu de caractères {a, b} correspond à un numéro binaire. 00 représente AA, 01 représente AB, etc. En parcourant tous les numéros de chiffre M et en rempla?ant les caractères, vous pouvez obtenir toutes les combinaisons possibles. Pour éviter des caractères identiques continus, des nombres spécifiques à M-chiffres doivent être exclus, comme les nombres où tous les bits sont les mêmes.

Exemple de code python:

 def Solve_Digit (arr, m, allow_all_same = false):
    res, cur = [], [''] * m
    n = len (arr)
    all_same_num = 0
    pour _ dans la gamme (m):
        all_same_num = all_same_num * n 1
    pour d dans la gamme (n ** m):
        Si perte_all_same ou d% all_same_num! = 0:
            pour I à portée (M - 1, -1, -1):
                cur [i] = arr [d% n]
                d // = n
            res.append (''. join (cur))
    Retour Res

print (solve_digit ('ab', 2)) # ['ab', 'ba']
print (solve_digit ('ab', 2, true)) # ['aa', 'ab', 'ba', 'bb']
print (solve_digit ('ab', 3)) # ['aab', 'aba', 'abb', 'baa', 'bab', 'bba']
print (solve_digit ('ABC', 2)) # ['AB', 'AC', 'BA', 'BC', 'CA', 'CB']

Méthode 2: méthode de retour en arrière

Backtrace est un algorithme récursif qui trouve des résultats en essayant toutes les combinaisons possibles. Ajoutez un caractère à la combinaison actuelle à chaque étape et génère récursivement des combinaisons plus longues. Dans le même temps, il est nécessaire de expliquer si les caractères précédents sont les mêmes pour éviter les combinaisons qui ne remplissent pas les conditions.

Exemple de code python:

 def Solve_BackTracking (arr, m, allow_all_same = false):
    res, cur = [], [''] * m

    def dfs (i, même):
        Si i == m:
            Si ce n'est pas le même:
                res.append (''. join (cur))
            Retour
        pour A dans Arr:
            cur [i] = a
            dfs (i 1, même et a == cur [i - 1])

    pour A dans Arr:
        Cur [0] = A
        DFS (1, pas allow_all_same)

    Retour Res

print (solve_backtracking ('ab', 2)) # ['ab', 'ba']
print (solve_backtracking ('ab', 2, true)) # ['aa', 'ab', 'ba', 'bb']
print (solve_backtracking ('ab', 3)) # ['aab', 'aba', 'abb', 'baa', 'bab', 'bba']
print (solve_backtracking ('abc', 2)) # ['ab', 'ac', 'ba', 'bc', 'ca', 'cb']

Les deux méthodes peuvent résoudre le problème. La méthode de remplacement numérique est plus efficace et la méthode de retour en arrière est plus facile à comprendre. La méthode à choisir dépend du scénario d'application spécifique et des préférences personnelles.

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

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.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

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)

Comment gérer l'authentification de l'API dans Python Comment gérer l'authentification de l'API dans Python Jul 13, 2025 am 02:22 AM

La clé pour gérer l'authentification de l'API est de comprendre et d'utiliser correctement la méthode d'authentification. 1. Apikey est la méthode d'authentification la plus simple, généralement placée dans l'en-tête de demande ou les paramètres d'URL; 2. BasicAuth utilise le nom d'utilisateur et le mot de passe pour la transmission de codage Base64, qui convient aux systèmes internes; 3. OAuth2 doit d'abord obtenir le jeton via client_id et client_secret, puis apporter le Bearertoken dans l'en-tête de demande; 4. Afin de gérer l'expiration des jetons, la classe de gestion des jetons peut être encapsulée et rafra?chie automatiquement le jeton; En bref, la sélection de la méthode appropriée en fonction du document et le stockage en toute sécurité des informations clés sont la clé.

Comment voir l'historique des engagements de mon référentiel GIT? Comment voir l'historique des engagements de mon référentiel GIT? Jul 13, 2025 am 12:07 AM

Pour afficher l'historique Git Commit, utilisez la commande gitlog. 1. L'utilisation de base est Gitlog, qui peut afficher le hachage de soumission, l'auteur, la date et les informations de soumission; 2. Utilisez Gitlog - Online pour obtenir une vue concise; 3. Filtre par l'auteur ou les informations de soumission via - Auteur et --Grep; 4. Ajouter -P pour afficher les modifications de code, - stat pour afficher les statistiques de changement; 5. Utilisez - GRAPH et - TOUT pour afficher l'historique de la branche, ou utiliser des outils de visualisation tels que Gitkraken et VScode.

Comment tester une API avec Python Comment tester une API avec Python Jul 12, 2025 am 02:47 AM

Pour tester l'API, vous devez utiliser la bibliothèque des demandes de Python. Les étapes consistent à installer la bibliothèque, à envoyer des demandes, à vérifier les réponses, à définir des délais d'attente et à réessayer. Tout d'abord, installez la bibliothèque via PiPinstallRequests; Utilisez ensuite les demandes.get () ou les demandes.Post () et d'autres méthodes pour envoyer des demandes GET ou POST; Vérifiez ensuite la réponse.status_code et la réponse.json () pour vous assurer que le résultat de retour est en conformité avec les attentes; Enfin, ajoutez des paramètres de délai d'expiration pour définir l'heure du délai d'expiration et combinez la bibliothèque de réessayer pour obtenir une nouvelle tentative automatique pour améliorer la stabilité.

Comment supprimer une branche git? Comment supprimer une branche git? Jul 13, 2025 am 12:02 AM

Pour supprimer une branche GIT, assurez-vous d'abord qu'elle a été fusionnée ou aucune rétention n'est requise. Utilisez Gitbranch-D pour supprimer la branche fusionnée locale. Si vous devez forcer la suppression des branches non fusionnées, utilisez le paramètre -D. La suppression de branche à distance utilise la commande gitpushorigin-selebranch-name et peut synchroniser les référentiels locaux des autres via Gitfetch-prne. 1. Pour supprimer la branche locale, vous devez confirmer si elle a été fusionnée; 2. Pour supprimer la branche distante, vous devez utiliser le paramètre - Delete; 3. Après la suppression, vous devez vérifier si la branche est supprimée avec succès; 4. Communiquez avec l'équipe pour éviter de supprimer accidentellement des succursales partagées; 5. Nettoyez régulièrement les branches inutiles pour garder l'entrep?t propre.

Portée variable python dans les fonctions Portée variable python dans les fonctions Jul 12, 2025 am 02:49 AM

Dans Python, les variables définies à l'intérieur d'une fonction sont des variables locales et ne sont valides que dans la fonction; Les variables globales sont définies à l'extérieur qui peuvent être lues n'importe où. 1. Les variables locales sont détruites lors de l'exécution de la fonction; 2. La fonction peut accéder aux variables globales mais ne peut pas être modifiée directement, donc le mot-clé global est requis; 3. Si vous souhaitez modifier les variables de fonction externes dans les fonctions imbriquées, vous devez utiliser le mot-clé non local; 4. Les variables avec le même nom ne se affectent pas dans différentes lunettes; 5. Global doit être déclaré lors de la modification des variables globales, sinon une erreur non liée à la dorsale sera augmentée. Comprendre ces règles permet d'éviter les bogues et d'écrire des fonctions plus fiables.

Tutoriel Python Fastapi Tutoriel Python Fastapi Jul 12, 2025 am 02:42 AM

Pour créer des API modernes et efficaces à l'aide de Python, FastAPI est recommandé; Il est basé sur des invites de type Python standard et peut générer automatiquement des documents, avec d'excellentes performances. Après avoir installé FastAPI et ASGI Server Uvicorn, vous pouvez écrire du code d'interface. En définissant les itinéraires, en écrivant des fonctions de traitement et en renvoyant des données, les API peuvent être rapidement construites. Fastapi prend en charge une variété de méthodes HTTP et fournit des systèmes de documentation SwaggerUI et Redoc générés automatiquement. Les paramètres d'URL peuvent être capturés via la définition du chemin, tandis que les paramètres de requête peuvent être implémentés en définissant des valeurs par défaut pour les paramètres de fonction. L'utilisation rationnelle des modèles pydantiques peut aider à améliorer l'efficacité du développement et la précision.

Python pour la boucle avec temps mort Python pour la boucle avec temps mort Jul 12, 2025 am 02:17 AM

Ajoutez un contr?le de délai d'expiration à Python pour Loop. 1. Vous pouvez enregistrer l'heure de début avec le module Time, et juger s'il est chronométré dans chaque itération et utiliser la pause pour sauter de la boucle; 2. Pour les taches de classement des classements, vous pouvez utiliser la boucle while pour faire correspondre le jugement du temps et ajouter le sommeil pour éviter la plénitude du processeur; 3. Les méthodes avancées peuvent considérer le filetage ou le signal pour obtenir un contr?le plus précis, mais la complexité est élevée, et il n'est pas recommandé aux débutants de choisir; Résumé Points clés: le jugement de temps manuel est la solution de base, tandis que les taches de classe d'attente limitées dans le temps sont indispensables et les méthodes avancées conviennent à des scénarios spécifiques.

Python pour la boucle sur un tuple Python pour la boucle sur un tuple Jul 13, 2025 am 02:55 AM

Dans Python, la méthode de traverser les tuples avec des boucles pour les boucles comprend directement itérer les éléments, obtenir des indices et des éléments en même temps, et le traitement des tuples imbriqués. 1. Utilisez la boucle pour accéder directement à chaque élément de séquence sans gérer l'index; 2. Utilisez EnuMerate () pour obtenir l'index et la valeur en même temps. L'indice par défaut est 0 et le paramètre de démarrage peut également être spécifié; 3. Les tuples imbriqués peuvent être déballés dans la boucle, mais il est nécessaire de s'assurer que la structure des sous-tables est cohérente, sinon une erreur de déballage sera augmentée; De plus, le tuple est immuable et le contenu ne peut pas être modifié dans la boucle. Les valeurs indésirables peuvent être ignorées par \ _. Il est recommandé de vérifier si le tuple est vide avant de traverser pour éviter les erreurs.

See all articles