python迷宮問題の深さは優先的に実例を巡回します。
一、迷宮の紹介
ラビリンス問題をpythonで解くと、ラビリンスは二次元リストであり、今回はラビリンス問題を深さ優先で解く。出発点と終点を定義して、一つの位置から次の位置までは、上または下または左または右に行くことでしか実現できません。出発点から出発して、どうやって終点までの通路を見つけられますか?
二、深さ優先巡回
簡単であれば、私達のケースでは、適当に道を選んで、まっすぐ行って、歩けなくなりました。また後で新しい道を選びます。
一つの点の次の点の座る基準について説明します。上走:r-1、c 下へ行きます。r+1、c 左走:r,c-1 右行き:r,c+1
私達のこの迷宮のある一点は歩けないところに達しました。つまり袋小路です。元の道に戻らなければなりません。
この時、私達は一つの概念があります。つまり、スタックの思想は先進的な後出です。
どのように理解していますか?小さな例を挙げると、食堂のおばさんです。毎朝肉まんを蒸しています。
最後に置いて、学生が肉まんを食べに来ます。彼女は上から取ります。一番上は最後に置いたものです。一番下は一番先に置いたものです。だから、先に出したものと言います。
リストを空にして、このリストで直接appedを使います。
popで取り出したら、appndの最後の要素を取ります。
ここでは、python迷宮問題について、深度優先の文章を紹介します。これに関連して、python迷宮の深度優先内容は以前の文章を検索してください。または次の関連記事を引き続きご覧ください。これからもよろしくお願いします。
ラビリンス問題をpythonで解くと、ラビリンスは二次元リストであり、今回はラビリンス問題を深さ優先で解く。出発点と終点を定義して、一つの位置から次の位置までは、上または下または左または右に行くことでしか実現できません。出発点から出発して、どうやって終点までの通路を見つけられますか?
二、深さ優先巡回
簡単であれば、私達のケースでは、適当に道を選んで、まっすぐ行って、歩けなくなりました。また後で新しい道を選びます。
# 1 ,0
maze = [
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 0, 1, 1, 0, 0, 0, 1, 1, 1],
[1, 0, 1, 1, 1, 1, 0, 0, 1, 1],
[1, 0, 1, 0, 0, 0, 0, 0, 1, 1],
[1, 0, 1, 0, 1, 1, 1, 1, 1, 1],
[1, 0, 0, 0, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 0, 0, 0, 0, 1, 1, 1],
[1, 1, 1, 0, 0, 1, 0, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 0, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
]
まず出発点と終点を設定します。
start = (1, 1)
end = (8, 8)
今のこの点を判断して、0は道を歩くことができて、1は壁のために歩くことができません。一つの点の次の点の座る基準について説明します。
この時、私達は一つの概念があります。つまり、スタックの思想は先進的な後出です。
どのように理解していますか?小さな例を挙げると、食堂のおばさんです。毎朝肉まんを蒸しています。
最後に置いて、学生が肉まんを食べに来ます。彼女は上から取ります。一番上は最後に置いたものです。一番下は一番先に置いたものです。だから、先に出したものと言います。
リストを空にして、このリストで直接appedを使います。
popで取り出したら、appndの最後の要素を取ります。
# , ,[r, c]
# , start
list01 = [start]
歩いた道は2と定義されています。
row, col = now
# python now , ,
maze[row][col] = 2
# , 2, , ,
コアコード:
if maze[row - 1][col] == 0:
#
list01.append((row - 1, col))
continue
elif maze[row][col + 1] == 0:
#
list01.append((row, col + 1))
continue
elif maze[row + 1][col] == 0:
#
list01.append((row + 1, col))
continue
elif maze[row][col - 1] == 0:
#
list01.append((row, col - 1))
continue
最終コードは、実行してみてもいいです。
maze = [
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 0, 1, 1, 0, 0, 0, 1, 1, 1],
[1, 0, 1, 1, 1, 1, 0, 0, 1, 1],
[1, 0, 1, 0, 0, 0, 0, 0, 1, 1],
[1, 0, 1, 0, 1, 1, 1, 1, 1, 1],
[1, 0, 0, 0, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 0, 0, 0, 0, 1, 1, 1],
[1, 1, 1, 0, 0, 1, 0, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 0, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
]
start = (1, 1)
end = (8, 8)
# , ,[r, c]
# , start
list01 = [start]
# ,
# ,
while list01:
# , , , -1
now = list01[-1]
if now == end: # now end
print(list01)
print(" ")
break
row, col = now
# python now , ,
maze[row][col] = 2
# , 2, , ,
# continue ,
if maze[row - 1][col] == 0:
#
list01.append((row - 1, col))
continue
elif maze[row][col + 1] == 0:
#
list01.append((row, col + 1))
continue
elif maze[row + 1][col] == 0:
#
list01.append((row + 1, col))
continue
elif maze[row][col - 1] == 0:
#
list01.append((row, col - 1))
continue
else: # , ,
list01.pop()
else:
print(" ")
締め括りをつけるここでは、python迷宮問題について、深度優先の文章を紹介します。これに関連して、python迷宮の深度優先内容は以前の文章を検索してください。または次の関連記事を引き続きご覧ください。これからもよろしくお願いします。