Solve Lake Counting (POJ n ° 2386) avec Python3

Exercice du livre de fourmis édition débutant

J'étudie pour un professionnel de la compétition. J'ai résolu le comptage des lacs, célèbre pour ses problèmes d'exploration, en utilisant Python, donc je le posterai ici. La plupart des gens le résolvent avec une fonction récursive, mais je l'ai résolu avec une pile (je ne peux pas encore reculer ...) Voici le code que j'ai implémenté. Je n'ai essayé que deux cas de test, donc je suis désolé s'il y a des modèles que je ne peux pas gérer.

lakecounting.py


n,m=map(int,input().split())
field=[list(input()) for i in range(n)]
visited = [[0 for i in range(m)] for j in range(n)]
move = [[0,1],[1,0],[1,1],[0,-1],[-1,0],[-1,-1],[1,-1],[-1,1]]

cnt=0

for i in range(n):
    for j in range(m):
        if field[i][j] == "W" and visited[i][j]==0:
            sx,sy=i,j
            stack=[[sx,sy]]
            visited[sx][sy]=1
            while stack:
                x,y = stack.pop()
                for k in range(8):
                    nx,ny = x+move[k][0],y+move[k][1]
                    if 0<=nx<n and 0<=ny<m and visited[nx][ny]==0 and field[nx][ny]=="W":
                        stack.append([nx,ny])
                        visited[nx][ny]=1
            cnt += 1
print(cnt)

Il est écrit sous la forme de réception d'une entrée standard. Veuillez signaler toute erreur.

Recommended Posts

Solve Lake Counting (POJ n ° 2386) avec Python3
Résolvez POJ 2386 avec python
Résolvez AtCoder 167 avec python
Résoudre des maths avec Python
[Python] Résoudre des équations avec sympy
Résolvez AtCoder ABC166 avec python
solveur> Lien> Résoudre le solveur Excel avec python
Résoudre ABC163 A ~ C avec Python
Recommandation de résolution des problèmes d'AtCoder avec python (20200517-0523)
Résoudre ABC168 A ~ C avec Python
Résoudre ABC162 A ~ C avec Python
Résoudre ABC167 A ~ C avec Python
Résoudre ABC158 A ~ C avec Python
Soudainement avec Python PyInstaller Aucun module nommé pyinstaller
[AtCoder] Résoudre ABC1 ~ 100 Un problème avec Python
Résoudre AtCoder ABC168 avec python (A ~ D)
Je voulais résoudre ABC172 avec Python
[AtCoder] Résoudre un problème de ABC101 ~ 169 avec Python
FizzBuzz en Python3
Grattage avec Python
Statistiques avec python
Résolvons des équations linéaires simultanées avec Python sympy!
Je voulais résoudre NOMURA Contest 2020 avec Python
Grattage avec Python
Python avec Go
Twilio avec Python
Intégrer avec Python
Jouez avec 2016-Python
Résolvez A ~ D du codeur yuki 247 avec python
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
Je veux résoudre APG4b avec Python (chapitre 2)
Zundokokiyoshi avec python
Traitement parallèle sans signification profonde en Python
Analyse de régression LASSO facile avec Python (pas de théorie)
Résolvez "AtCoder version! Arimoto (Débutant)" avec Python!
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
Essayez de résoudre le livre des défis de programmation avec python3
Essayez de résoudre le problème d'affectation du médecin de formation avec Python
J'ai essayé de résoudre Soma Cube avec python
Résolvez des équations différentielles normales simultanées avec Python et SymPy.
J'ai essayé de résoudre le problème avec Python Vol.1
J'ai essayé de résoudre la théorie des nombres entiers d'AOJ avec Python
Communication série avec Python
Zip, décompressez avec python
Django 1.11 a démarré avec Python3.6
Jugement des nombres premiers avec Python
Python avec eclipse + PyDev.
Communication de socket avec Python
Analyse de données avec python 2
Grattage en Python (préparation)
Résoudre ABC168D en Python
Apprendre Python avec ChemTHEATER 03
Recherche séquentielle avec Python
Résolvez ABC167-D avec Python