J'ai essayé de résoudre la recherche de priorité de profondeur (DFS) d'AtCoder en Python (résultat: TLE ...)

Objectif

・ Après avoir étudié Python, j'ai fait beaucoup de programmation compétitive ces derniers temps. Lors de la résolution des questions précédentes, je suis tombé sur la recherche de priorité en profondeur, j'ai donc résumé la solution. Le problème contesté est la recherche de priorité en profondeur pour le problème A dans le concours typique 001. https://atcoder.jp/contests/atc001/tasks/dfs_a

répondre


class Dfs():
    def dfs(self, h, w, maze, init):
        search_stack = [init] #Stocker les coordonnées initiales dans la pile de recherche
        fin = [] #Définir la pile de complétion
        while search_stack:
            latest = search_stack.pop() #Extraire l'emplacement actuel de la pile de recherche
            if maze[latest[0]][latest[1]] == "g": #Sortie Oui si votre emplacement actuel est Objectif
                print("Yes")
                exit()
            else:
                fin.append(latest) #Stocker les coordonnées recherchées dans la pile de complétion
                candi = [(latest[0]-1, latest[1]), (latest[0]+1, latest[1]), (latest[0], latest[1]-1), (latest[0], latest[1]+1)] #Définir les candidats coordonnés
                for (ny, nx) in candi:
                    if self.check_range(h, w, ny, nx): #Juger si les candidats coordonnateurs sont hors de portée
                        if self.check_wall(maze, ny, nx): #Déterminer si la coordonnée candidate est un mur
                            if not (ny, nx)  in search_stack and not (ny, nx) in fin: #Déterminer si les coordonnées des candidats sont incluses dans la pile de recherche et la pile d'achèvement
                                search_stack.append((ny, nx)) #Stocker dans la pile de recherche
                                continue
        print("No")                    
        
    def check_range(self, h, w, y, x):
        if x > w-1 or x < 0:
            return False
        elif y > h-1 or y < 0:
            return False
        else:
            return True
    
    def check_wall(self, maze, y, x):
        if maze[y][x] == "#":
            return False
        else: 
            return True

if __name__ == "__main__":
    h,w = map(int,input().split())
    maze = [list(input()) for i in range(h)]
    for y, row in enumerate(maze):
        try:
            init = (y, row.index("s")) #Rechercher un point de départ
            d = Dfs()
            d.dfs(h, w, maze, init)
            break
        except ValueError:
            pass

Recommended Posts

J'ai essayé de résoudre la recherche de priorité de profondeur (DFS) d'AtCoder en Python (résultat: TLE ...)
Algorithme en Python (recherche de priorité en profondeur, dfs)
J'ai essayé d'implémenter PLSA en Python
J'ai essayé d'implémenter la permutation en Python
J'ai essayé d'implémenter PLSA dans Python 2
J'ai essayé d'implémenter ADALINE en Python
Je voulais résoudre ABC159 avec Python
J'ai essayé d'implémenter PPO en Python
J'ai essayé d'implémenter TOPIC MODEL en Python
J'ai essayé d'implémenter le tri sélectif en python
J'ai essayé de représenter graphiquement les packages installés en Python
J'ai essayé de résoudre Soma Cube avec python
J'ai essayé d'implémenter le poker de Drakue en Python
J'ai essayé de résumer comment utiliser les pandas de python
J'ai essayé de résoudre le problème avec Python Vol.1
Implémenter la recherche de priorité en profondeur (DFS) et la recherche de priorité de largeur (BFS) en python
J'ai essayé de résoudre la théorie des nombres entiers d'AOJ avec Python
[Python] DFS (recherche de priorité en profondeur) ATC001A
[Python] DFS (recherche de priorité en profondeur) ABC157D
[Pour les professionnels de la compétition débutants] J'ai essayé de résoudre 40 questions AOJ "ITP I" avec python
J'ai essayé d'implémenter un automate cellulaire unidimensionnel en Python
J'ai essayé "Comment obtenir une méthode décorée en Python"
J'ai essayé d'implémenter la fonction d'envoi de courrier en Python
J'ai fait un chronomètre en utilisant tkinter avec python
J'ai essayé d'implémenter le blackjack du jeu Trump en Python
J'ai essayé de toucher Python (installation)
Écrire une recherche de priorité en profondeur en Python
J'ai essayé la notification de ligne en Python
Recherche de priorité de profondeur à l'aide de la pile en Python
J'ai essayé de résoudre l'édition du débutant du livre des fourmis avec python
Je veux résoudre APG4b avec Python (seulement 4.01 et 4.04 au chapitre 4)
J'ai essayé "Implémentation d'un algorithme génétique (GA) en python pour résoudre le problème du voyageur de commerce (TSP)"
J'ai essayé de résumer la gestion des exceptions Python
Je voulais résoudre ABC160 avec Python
J'ai essayé d'utiliser l'optimisation bayésienne de Python
J'ai essayé de laisser optuna résoudre le nombre
J'ai essayé de résoudre TSP avec QAOA
[Python] J'ai essayé de calculer TF-IDF régulièrement
J'ai essayé de toucher Python (syntaxe de base)
Je voulais résoudre ABC172 avec Python
[Python] J'ai essayé de résumer le type collectif (ensemble) d'une manière facile à comprendre.
Comment écrire hors ligne en temps réel J'ai essayé de résoudre E11 avec python
J'ai essayé d'implémenter la régression linéaire bayésienne par échantillonnage de Gibbs en python
Je veux convertir par lots le résultat de "chaîne de caractères" .split () en Python
J'ai essayé de développer un formateur qui génère des journaux Python en JSON
J'ai essayé d'implémenter le jeu de cartes de Trump en Python
Comment écrire en temps réel hors ligne J'ai essayé de résoudre E12 avec python
J'ai essayé d'implémenter le tri par fusion en Python avec le moins de lignes possible
Je veux faire le test de Dunnett en Python
[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 5/22]
Je voulais résoudre NOMURA Contest 2020 avec Python
J'ai essayé de créer une classe qui peut facilement sérialiser Json en Python
Python: j'ai pu récurer en lambda
Je veux créer une fenêtre avec Python
[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 7/22]
J'ai essayé de jouer à un jeu de frappe avec Python
J'ai essayé d'intégrer Keras dans TFv1.1
J'ai essayé de simuler "Birthday Paradox" avec Python
J'ai essayé la méthode des moindres carrés en Python
J'ai écrit "Introduction à la vérification des effets" en Python
J'ai essayé d'obtenir des données CloudWatch avec Python