Täglicher AtCoder # 31 in Python

Einführung

Letztes Mal Es ist eine Fortsetzung von \ # 24. Heute werde ich [ARC031-B] lösen (https://atcoder.jp/contests/arc031/tasks/arc031_2).

#31 ARC031-B

** Gedanken ** Zuerst wusste ich nicht, wie man DFS schreibt, also las ich Artikel. Als ich jedoch suchte, kam nur derjenige heraus, der die rekursive Funktion verwendete, und dieses Mal werde ich sie mit dem Stapel lösen (das weiß ich nur). Der Unterschied zu dem vorherigen Problem dieses Problems besteht darin, dass kein Ziel festgelegt wurde. Zuerst bin ich darauf gestoßen. Da es kein Ziel gibt, konnte ich die Endbedingung der Suche nicht gut festlegen. Denken Sie also über Ihre Ziele nach. Bei diesem Problem wird gefragt, ob alle ** 'o's verbunden sind **. Das Ziel ist also, dass die Anzahl der gesuchten O's die Summe der eingegebenen O's ist. Zusätzlich wird die Deponie mit double for berechnet. ** Bitte verzeihen Sie, dass der Variablenname nicht verschmutzt ist. ** **.

from collections import deque
field = [list(input()) for _ in range(10)] #Wenn Sie es mit str erhalten, wird zum Zeitpunkt der Deponierung ein Fehler ausgegeben. Machen Sie es also zu einer 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 #Schritte berechnen
    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 #Deponiert'o'Wird steigen
            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' #Rückkehr nach der Deponie
            ume = False
            count_step -= 1
print('NO')

Zusammenfassung

Ich möchte mich nach und nach daran gewöhnen und es benutzen können. Wenn Sie interessante Probleme haben, rippen Sie bitte. Wir sehen uns wieder, gute Nacht.

Recommended Posts

Täglicher AtCoder # 36 mit Python
AtCoder # 2 jeden Tag mit Python
Täglicher AtCoder # 32 in Python
Täglicher AtCoder # 18 in Python
Täglicher AtCoder # 33 in Python
Täglicher AtCoder # 7 in Python
AtCoder # 24 jeden Tag mit Python
AtCoder # 8 jeden Tag mit Python
Täglicher AtCoder # 42 in Python
Täglicher AtCoder # 21 mit Python
Täglicher AtCoder # 17 mit Python
Täglicher AtCoder # 38 in Python
Täglicher AtCoder # 54 in Python
Täglicher AtCoder # 11 in Python
Täglicher AtCoder # 15 in Python
Täglicher AtCoder # 47 mit Python
Täglicher AtCoder # 13 in Python
Täglicher AtCoder # 45 mit Python
AtCoder # 30 jeden Tag in Python
Täglicher AtCoder # 40 mit Python
Täglicher AtCoder # 10 mit Python
AtCoder # 5 jeden Tag mit Python
Täglicher AtCoder # 28 in Python
Täglicher AtCoder # 39 in Python
Täglicher AtCoder # 20 in Python
Täglicher AtCoder # 19 in Python
Täglicher AtCoder # 52 in Python
Täglicher AtCoder # 3 in Python
Täglicher AtCoder # 14 mit Python
Täglicher AtCoder # 50 mit Python
Täglicher AtCoder # 26 mit Python
Täglicher AtCoder # 4 mit Python
Täglicher AtCoder # 43 in Python
Täglicher AtCoder # 29 in Python
Täglicher AtCoder # 49 in Python
Täglicher AtCoder # 27 in Python
AtCoder # 1 jeden Tag mit Python
Täglicher AtCoder # 25 mit Python
Täglicher AtCoder # 16 in Python
Täglicher AtCoder # 12 in Python
Täglicher AtCoder # 23 in Python
Täglicher AtCoder # 34 in Python
Täglicher AtCoder # 51 mit Python
Täglicher AtCoder # 31 in Python
Jeden Tag mit Python AtCoder # 46
Täglicher AtCoder # 35 mit Python
AtCoder # 9 jeden Tag mit Python
Täglicher AtCoder # 44 mit Python
Jeden Tag mit Python AtCoder # 41
Atcoder ABC164 A-C in Python
atCoder 173 Python
Python-Eingabehinweis in AtCoder
Atcoder ABC167 A-D in Python
Atcoder ABC166 A-E in Python
Atcoder ABC169 A-E in Python
AtCoder ABC177 A-D mit Python
Löse den Atcoder ABC169 A-D mit Python
[Python] Grundkenntnisse in AtCoder
Quadtree in Python --2
Python in der Optimierung
Metaprogrammierung mit Python