upd
This commit is contained in:
38
algorithms/labs/lab8/code/search/1.py
Normal file
38
algorithms/labs/lab8/code/search/1.py
Normal file
@@ -0,0 +1,38 @@
|
||||
def exist(board, word):
|
||||
rows, cols = len(board), len(board[0])
|
||||
visited = set()
|
||||
|
||||
def dfs(r, c, k):
|
||||
if k == len(word):
|
||||
return True
|
||||
if (
|
||||
r < 0
|
||||
or r >= rows
|
||||
or c < 0
|
||||
or c >= cols
|
||||
or (r, c) in visited
|
||||
or board[r][c] != word[k]
|
||||
):
|
||||
return False
|
||||
visited.add((r, c))
|
||||
ok = (
|
||||
dfs(r + 1, c, k + 1)
|
||||
or dfs(r - 1, c, k + 1)
|
||||
or dfs(r, c + 1, k + 1)
|
||||
or dfs(r, c - 1, k + 1)
|
||||
)
|
||||
visited.remove((r, c))
|
||||
return ok
|
||||
|
||||
for r in range(rows):
|
||||
for c in range(cols):
|
||||
if dfs(r, c, 0):
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
board = [["A", "B", "C", "E"], ["S", "F", "C", "S"], ["A", "D", "E", "E"]]
|
||||
print(exist(board, "ABCCED"))
|
||||
print(exist(board, "SEE"))
|
||||
print(exist(board, "ABCB"))
|
||||
Reference in New Issue
Block a user