btvn.vn
Tìm kiếm Đăng nhập

Đọc mê cung và tọa độ ô

Lưu trên thiết bị này
Chuyên đề lựa chọn CS: Kĩ thuật duyệt · Chọn bài khác

Hai ma trận có hai ý nghĩa

Hình so sánh cùng một lưới trước và sau tìm kiếm; cần đọc số 0/1 theo tên ma trận.
Mê cung 4 hàng 5 cột và vết đường đi từ (0,0) đến (4,3); nhánh ngõ cụt ở hàng 0 đã bị bỏ khỏi kết quả.
Ở maze,1 là tường; ở sol,1 là vết đường. Số0 trong sol không tự cho biết ô đó có phải tường hay không.
Mở hình lớn
Mê cung có m hàng, n cột; maze lưu dữ liệu đầu vào: 0 là ô đi được, 1 là tường. Chỉ đi sang một ô kề cạnh, không đi chéo. Bài toán ban đầu tìm **một đường** từ góc trái trên đến góc phải dưới. Tọa độ (x,y) dùng x cho cột, y cho hàng, đều bắt đầu từ 0. Vì ma trận được đọc theo từng hàng, ô hiện tại là maze[y][x]. Với m=4,n=5, đích là (4,3), không phải (3,4). Ma trận sol cùng kích thước, ban đầu toàn 0; sau khi tìm thành công, 1 đánh dấu các ô thuộc đường, 0 là phần còn lại.

Đọc từng dòng rồi kiểm hình chữ nhật

```python def readmaze(path): maze = [] with open(path, encoding='utf-8') as file: for line in file: row = [int(value) for value in line.split()] if not row or any(value not in (0, 1) for value in row): raise ValueError('Mỗi dòng cần có các số0 hoặc1, cách nhau bởi dấu cách.') maze.append(row) if not maze or any(len(row) != len(maze[0]) for row in maze): raise ValueError('Mê cung cần là ma trận chữ nhật khác rỗng.') return maze ``` Mỗi dòng tệp chứa các số 0/1 cách nhau bằng dấu cách. split tách các giá trị, int đổi thành số và append thêm một hàng. Sau khi đọc, các hàng phải dài bằng nhau và dữ liệu khác rỗng để len(maze[0]) dùng được. Tệp mẫu có 4 hàng, mỗi hàng 5 số. Hàm báo lỗi nếu có dòng trống, số khác 0/1 hoặc hàng dài ngắn khác nhau. Đây là kiểm dữ liệu đầu vào, không phải các nhánh của thuật toán tìm đường.

Bài luyện

Ô (x=3,y=1) được đọc bằng biểu thức nào?
Chọn một đáp án

Bài luyện

Số 1 trong maze và số 1 trong sol có cùng ý nghĩa không?
Chọn một đáp án

Bài luyện

Mê cung 4 hàng, 5 cột có đích góc phải dưới ở đâu?
Chọn một đáp án

Đang học