Daily AtCoder # 31 en Python

introduction

Dernière fois C'est une continuation de \ # 24. Aujourd'hui, je vais résoudre ARC031-B.

#31 ARC031-B

** Pensées ** Au début, je ne savais pas comment écrire DFS, alors j'ai lu Article. Cependant, lorsque j'ai cherché, seul celui utilisant la fonction récursive est sorti, donc cette fois je vais le résoudre en utilisant stack (je le sais seulement). La différence avec le problème précédent de ce problème est qu'aucun objectif n'est fixé. Au début, je suis tombé sur cela. Comme il n'y a pas d'objectif, je n'ai pas pu définir correctement la condition de fin de la recherche. Alors pensez à vos objectifs. Ce problème demande si tous les ** 'o sont connectés **, donc le but est que le nombre de' o 'recherché soit la somme des entrées'o. De plus, la mise en décharge est calculée avec un double pour. ** Veuillez pardonner que le nom de la variable n'est pas sale. ** **

from collections import deque
field = [list(input()) for _ in range(10)] #Si vous le recevez avec str, cela générera une erreur au moment de la mise en décharge, alors faites-en une liste

def dfs(field,visited_list,stack):
    step = 0
    while len(stack) > 0:
        h, w = stack.pop()
        for j, k in ([1,0],[-1,0],[0,1],[0,-1]):
            new_h, new_w = h+j, w+k
            if new_h < 0 or new_h >= 10 or new_w < 0 or new_w >= 10:
                continue
            if field[new_h][new_w] != 'x' and visited_list[new_h][new_w] == 0:
                visited_list[new_h][new_w] = 1
                stack.append([new_h,new_w])
                step += 1 #Calculer les étapes
    return step

count_step = 0
for i in range(10):
    for j in range(10):
        if field[i][j] == 'o':
            count_step += 1
ume = 0
for i in range(10):
    for j in range(10):
        if field[i][j] != 'o':
            field[i][j] = 'o'
            count_step += 1 #Mis en décharge'o'Augmentera
            ume = True
        visited_list = [[0]*10 for _ in range(10)]
        visited_list[i][j] = 1
        stack = deque([[i,j]])
        step = dfs(field,visited_list,stack)
        step += 1
        if step == count_step:
            print('YES')
            quit()
        if ume:
            field[i][j] = 'x' #Retour après mise en décharge
            ume = False
            count_step -= 1
print('NO')

Résumé

Je veux m'y habituer petit à petit et devenir capable de m'en servir. Si vous rencontrez des problèmes intéressants, veuillez déchirer. A bientôt, bonne nuit.

Recommended Posts

AtCoder # 36 quotidien avec Python
AtCoder # 2 tous les jours avec Python
Daily AtCoder # 32 en Python
Daily AtCoder # 18 en Python
Daily AtCoder # 33 en Python
AtCoder # 7 tous les jours avec Python
AtCoder # 24 tous les jours avec Python
AtCoder # 8 tous les jours avec Python
Daily AtCoder # 42 en Python
AtCoder # 21 quotidien avec Python
Daily AtCoder # 17 avec Python
Daily AtCoder # 38 en Python
Daily AtCoder # 54 en Python
Daily AtCoder # 11 en Python
Daily AtCoder # 15 en Python
Daily AtCoder # 47 avec Python
Daily AtCoder # 13 en Python
AtCoder # 45 quotidien avec Python
AtCoder # 30 tous les jours en Python
AtCoder # 40 quotidien avec Python
AtCoder # 10 quotidien avec Python
AtCoder # 5 tous les jours avec Python
Daily AtCoder # 28 en Python
AtCoder # 39 quotidien avec Python
Daily AtCoder # 20 en Python
Daily AtCoder # 19 en Python
Daily AtCoder # 52 en Python
Daily AtCoder # 3 en Python
Daily AtCoder # 14 avec Python
Daily AtCoder # 50 avec Python
Daily AtCoder # 26 avec Python
AtCoder quotidien # 4 avec Python
Daily AtCoder # 43 en Python
Daily AtCoder # 29 en Python
Daily AtCoder # 49 en Python
Daily AtCoder # 27 en Python
AtCoder # 1 tous les jours avec Python
Daily AtCoder # 25 avec Python
Daily AtCoder # 16 en Python
Daily AtCoder # 12 en Python
Daily AtCoder # 23 en Python
Daily AtCoder # 34 en Python
AtCoder # 51 quotidien avec Python
Daily AtCoder # 31 en Python
Daily AtCoder # 46 en Python
AtCoder # 35 quotidien avec Python
AtCoder # 9 tous les jours avec Python
Daily AtCoder # 44 avec Python
Daily AtCoder # 41 en Python
Atcoder ABC164 A-C en Python
atCoder 173 Python
Note d'entrée Python dans AtCoder
Atcoder ABC167 A-D en Python
Atcoder ABC166 A-E en Python
Atcoder ABC169 A-E en Python
AtCoder ABC177 A-D avec python
Résoudre Atcoder ABC169 A-D avec Python
[Python] Connaissances de base utilisées dans AtCoder
Quadtree en Python --2
Python en optimisation
Métaprogrammation avec Python