[python]BFS/DFSターゲット番号
5744 ワード
リンクテキスト
メソッドDFSBSBFS動作原理スタックキューの実装方法再利用可能なキューリソース構造を使用する
DFSはスタートラインから迷路を探索するように突き当たりまで歩き、渋滞に遭遇したら元の場所に戻り、別の方向を探す方法です. すなわちこの方法はDepth優先探索と呼ばれ,グラフィックにおいて深部を優先的に探索するアルゴリズムであるDepth First Searchである.(番号の低い隣接ノードから開始します.)これは、できるだけ遠くのノードを優先的に参照できることを意味します. BFSは、現在の位置ですべての隣接ノードにアクセスし、どこにも行けない場合、アクセスがアクセスノードに接続される方法である.△直感的に見ると、親しい友達を見つけてから、友達を探すことで理解することができます. すなわちBFSアルゴリズムはBreadth First Searchであり,「幅優先探索」の意味を持つ.すなわち,近接ノードから探索を開始するアルゴリズムである.
n個の非負の整数.この数字を適当に加算または減算してターゲット番号を作成したいです.たとえば、[1,1,1,1,1,1]で数値3を作成するには、次の5つの方法があります.
1+1+1+1+1 = 3
+1-1+1+1+1 = 3
+1+1-1+1+1 = 3
+1+1+1-1+1 = 3
+1+1+1+1-1 = 3
使用可能な数値の配列番号、ターゲット番号のターゲットをパラメータとして指定したときに、適切に数値を加算して減算して、ターゲット番号を作成する方法の数を返します.
与えられた数字の個数は2個または20個以上である.
各数字は1または50以下の自然数です.
ターゲット番号が1または1000以下の自然数です.
numberstargetreturn[1, 1, 1, 1, 1]35[4, 1, 2, 1]42
問題の例は次のとおりです.
+4+1-2+1 = 4
+4-1+2-1 = 4
そのため、2つの方法があります.
リンクテキスト
数字を付けると、そうであれば、この2つの状況でツリーを生成できます.個の数値を加算または減算して水平位置に追加します. は、最終的にすべての計算結果をリーフテーブルに含めます.結果出力 再帰関数の使用
メソッドDFSBSBFS動作原理スタックキューの実装方法再利用可能なキューリソース構造を使用する
DFS(Depth First Search)
BFS(Breadth First Search)
問題の説明
n個の非負の整数.この数字を適当に加算または減算してターゲット番号を作成したいです.たとえば、[1,1,1,1,1,1]で数値3を作成するには、次の5つの方法があります.
1+1+1+1+1 = 3
+1-1+1+1+1 = 3
+1+1-1+1+1 = 3
+1+1+1-1+1 = 3
+1+1+1+1-1 = 3
使用可能な数値の配列番号、ターゲット番号のターゲットをパラメータとして指定したときに、適切に数値を加算して減算して、ターゲット番号を作成する方法の数を返します.
せいげんじょうけん
与えられた数字の個数は2個または20個以上である.
各数字は1または50以下の自然数です.
ターゲット番号が1または1000以下の自然数です.
I/O例
numberstargetreturn[1, 1, 1, 1, 1]35[4, 1, 2, 1]42
I/O例説明
問題の例は次のとおりです.
+4+1-2+1 = 4
+4-1+2-1 = 4
そのため、2つの方法があります.
リンクテキスト
もんだいぶんせき
数字を付けると、そうであれば、この2つの状況でツリーを生成できます.
#BFS 풀이
def solution(numbers, target):
answer = 0
leaves = [0]
for num in numbers:
tmp = []
for parent in leaves:
tmp.append(parent + num)
tmp.append(parent - num)
leaves = tmp
for leaf in leaves:
if leaf == target:
answer += 1
return answer
def solution(numbers, target):
n = len(numbers)
answer = 0
def dfs(idx, result):
if idx == n:
if result == target:
nonlocal answer
answer += 1
return
else:
dfs(idx+1, result+numbers[idx])
dfs(idx+1, result-numbers[idx])
dfs(0,0)
return answer
Reference
この問題について([python]BFS/DFSターゲット番号), 我々は、より多くの情報をここで見つけました https://velog.io/@dmsql698/Python-BFSDFS타겟넘버テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol