[アルゴリズム]目標番号(DFS、BFS)


ターゲット番号


(質問)


DFS深度優先ナビゲーション、主に移動プロセス(Stack)の計算に使用
BFS幅優先ナビゲーションを使用して、主に最短距離(queue)の計算に使用します.
BFS使用時のfrom collections import dequeの追加
まず,プロジェクトはBFS/DFSのナビゲーションであるため,ナビゲーションを用いて問題を解決した.
DFS実装.
def solution(numbers, target):
   
   # DFS
   # 최상단 Node 선언
   visited = [0]
   
   for number in numbers:
       temp =[]
       for i in visited:
           # +1 과 -1 뿐
           temp.append(i+number)
           temp.append(i-number)
           visited = temp
       print(visited)
   return visited.count(target)
             0
        +1     -1
     +1-1     +1 -1
  +1-1 +1-1 +1-1 +1-1
       numbers 만큼
アクセス値:
[5, 3, 3, 1, 3, 1, 1, -1, 3, 1, 1, -1, 1, -1, -1, -3, 3, 1, 1, -1, 1, -1, -1, -3, 1, -1, -1, -3, -1, -3,-3, -5]
アクセス値中にCountを使用してターゲット値を取得
BFSの実装
BFSの実装に対する理解が乏しいため,対応するソースを用いた.
ソース:https://jainn.tistory.com/139?category=913177
from collections import deque

def solution(numbers, target):
    answer = 0
    queue = deque()
    #최상단노드
    queue.append(0)
    
    for number in numbers:
        for _ in range(len(queue)):
            n = queue.popleft()
            queue.append(n+number)
            queue.append(n-number)
    
    return queue.count(target)
デック
[0][1 -1][-1 2 0][2 0 0 -2][0 0 -2 3 1]
順番に入る.
BFSの場合、キューが使用されるため、先頭の値を減算し、隣接する値を追加します.