单词搜索程序(Word Search)是一种逻辑游戏,玩家在一个由字母组成的网格中寻找隐藏的单词。这些单词可以是水平的、垂直的或对角线的,并且可以正向或反向排列。
def find_words(board, words):
def dfs(board, word, i, j, k):
if not (0 <= i < len(board) and 0 <= j < len(board[0]) and board[i][j] == word[k]):
return False
if k == len(word) - 1:
return True
tmp, board[i][j] = board[i][j], '/'
res = dfs(board, word, i + 1, j, k + 1) or dfs(board, word, i - 1, j, k + 1) or \
dfs(board, word, i, j + 1, k + 1) or dfs(board, word, i, j - 1, k + 1)
board[i][j] = tmp
return res
def exist(board, word):
for i in range(len(board)):
for j in range(len(board[0])):
if dfs(board, word, i, j, 0):
return True
return False
result = []
for word in words:
if exist(board, word):
result.append(word)
return result
# 示例网格和单词列表
board = [
['A', 'B', 'C', 'E'],
['S', 'F', 'C', 'S'],
['A', 'D', 'E', 'E']
]
words = ["ABCCED", "SEE", "ABCB"]
print(find_words(board, words)) # 输出: ['ABCCED', 'SEE']
'/'
)来标记已访问的单元格。通过以上方法,可以有效地实现单词搜索程序,并解决常见的编程问题。
领取专属 10元无门槛券
手把手带您无忧上云