Disons que j'ai un ensemble de lettres {a, b, c, t} et un dictionnaire de fonction (s) qui retourne T/F pour vérifier si une chaîne s existe dans le dictionnaire anglais. Construisez des mots valides en utilisant la recherche approfondie en profondeur.Profondeur Première recherche: Soit un ensemble de lettres construire des mots valides
Je ne demande pas de code ici. J'ai besoin d'aide avec la structure de l'arbre. Je ne suis pas capable de visualiser la structure de l'arbre dans ce problème.
Par exemple, ces quatre lettres peuvent être dans une seule colonne pour s DFS. Alors dois-je construire l'arbre pour toutes les permutations possibles et ensuite effectuer un DFS?
Edit: je dois construire des mots de taille 3.
Exemple:
a b
/ /
b c
/ /
c t
/ /
t a
Il n'est pas nécessaire de représenter explicitement l'arbre; Supposez simplement que chaque lettre est valide dans chaque position. Si je comprends bien la question, le problème n'a pas de sens sans une restriction sur la longueur des mots. – Codor
@Codor: Merci pour le commentaire. Tu as raison. J'ai besoin de construire des mots de taille 3. Si le problème me demande une approche DFS, alors je pense qu'il est juste que je sois capable de dessiner la structure arborescente. Je peux résoudre cela en utilisant la force brute, mais je veux utiliser DFS et donc besoin de visualiser la structure de l'arbre. –
La structure arborescente aurait une racine avec une chaîne vide '' ''. À chaque étape, vous choisissez une lettre parmi les lettres disponibles. Cela signifie 4 enfants de la racine et 3 enfants chacun pour les nœuds à la profondeur 1, 2 enfants chacun pour les nœuds à la profondeur 2. Total des nœuds feuilles est '4 x 3 x 2' qui est également égal à' 4P3'. Vous devriez vérifier T/F chaque fois que vous atteignez un nœud feuille (c'est quand vous avez réellement un mot) –