Giả sử, chúng ta có một lưới hoặc một ma trận các từ. Chúng ta phải kiểm tra xem một từ đã cho có xuất hiện trong lưới hay không. Từ có thể được tìm thấy theo bốn cách, theo chiều ngang trái phải và theo chiều dọc lên xuống. Nếu chúng tôi có thể tìm thấy từ, chúng tôi trả về True, ngược lại là False.
Vì vậy, nếu đầu vào giống như
p | g | h | s | f |
y | k | d | g | h |
t | k | g | h | tôi |
h | n | s | j | s |
o | j | f | g | h |
n | r | t | y | u |
input_str ="python", thì đầu ra sẽ là True.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- Xác định một hàm find_grid (). Điều này sẽ lấy ma trận, input_str, row_pos, col_pos, row_count, col_count, độ
- nếu mức độ giống với kích thước của input_str, thì
- trả về True
- nếu row_pos <0 hoặc col_pos <0 hoặc row_pos> =row_count hoặc col_pos> =col_count, thì
- trả về Sai
- nếu ma trận [row_pos, col_pos] giống với input_str [độ], thì
- temp:=matrix [row_pos, col_pos]
- thay thế các phần tử của ma trận [row_pos, col_pos] bằng '#'
- kết quả:=find_grid (ma trận, input_str, row_pos - 1, col_pos,
- row_count, col_count, độ + 1) theo chiều dọc hoặc
- find_grid (ma trận, input_str, row_pos + 1, col_pos, row_count,
- col_count, độ + 1) bitwise hoặc
- find_grid (ma trận, input_str, row_pos, col_pos - 1, row_count,
- col_count, độ + 1) bitwise hoặc
- find_grid (ma trận, input_str, row_pos, col_pos + 1, row_count, col_count, độ + 1))
- thay thế các phần tử của ma trận [row_pos, col_pos] bằng temp
- trả về kết quả
- nếu không,
- trả về Sai
- nếu mức độ giống với kích thước của input_str, thì
- Từ hàm / phương thức chính, hãy thực hiện như sau -
- nếu độ dài của input_str> row_count * col_count, thì
- trả về Sai
- đối với hàng trong phạm vi 0 đến row_count, hãy thực hiện
- đối với col trong phạm vi 0 đến col_count, thực hiện
- nếu ma trận [row, col] giống với input_str [0], thì
- nếu (find_grid (matrix, input_str, row, col, row_count, col_count, 0) là True), thì
- trả về True
- nếu (find_grid (matrix, input_str, row, col, row_count, col_count, 0) là True), thì
- nếu ma trận [row, col] giống với input_str [0], thì
- đối với col trong phạm vi 0 đến col_count, thực hiện
- trả về Sai
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
def find_grid(matrix, input_str, row_pos, col_pos, row_count, col_count, degree) : if (degree == len(input_str)) : return True if (row_pos < 0 or col_pos < 0 or row_pos >= row_count or col_pos >= col_count) : return Fals if (matrix[row_pos][col_pos] == input_str[degree]) : temp = matrix[row_pos][col_pos] matrix[row_pos].replace(matrix[row_pos][col_pos], "#") result = (find_grid(matrix, input_str, row_pos - 1, col_pos, row_count, col_count, degree + 1) |find_grid(matrix, input_str, row_pos + 1, col_pos, row_count, col_count, degree + 1) |find_grid(matrix, input_str, row_pos, col_pos - 1, row_count, col_count, degree + 1) |find_grid(matrix, input_str, row_pos, col_pos + 1, row_count, col_count, degree + 1)) matrix[row_pos].replace(matrix[row_pos][col_pos], temp) return result else : return False def solve(matrix, input_str, row_count, col_count) : if (len(input_str) > row_count * col_count) : return False for row in range(row_count) : for col in range(col_count) : if (matrix[row][col] == input_str[0]) : if (find_grid(matrix, input_str, row, col, row_count, col_count, 0)) : return True return False word_grid = ["pghsf", "ykdgh", "tkghi", "hnsjs", "ojfgh", "nrtyu"] print(solve(word_grid, "python", 6, 5))
Đầu vào
["pghsf", "ykdgh", "tkghi", "hnsjs", "ojfgh", "nrtyu"],"python"
Đầu ra
True