Files
exams/algorithms/labs/lab8/code/search/1.py
2025-10-01 22:55:09 +03:00

39 lines
949 B
Python

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"))