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

Đổi điểm xuất phát và đánh dấu tường

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

Từ ô giữa đến một trong hai góc

Với m hàng, n cột, chọn x=n//2 và y=m//2 theo cách lấy phần nguyên. Ví dụ mê cung 3 hàng 6 cột chọn (x=3,y=1). Với kích thước chẵn có nhiều ô gần giữa; đây là ô giữa theo quy ước của phép chia nguyên. Đích có thể là góc trái trên (0,0) hoặc góc phải dưới (n−1,m−1). Truyền goals chứa cả hai cặp tọa độ vào solveMaze; ô hiện tại phải trong lưới, mở và chưa nằm trong đường trước khi được công nhận là đích. ```text python3 g11-cs-me-cung.py g11-cs-me-cung.inp --giua --output giua.out ``` Với mẫu 4×5, xuất phát (2,2); hướng phải dẫn đến (4,3). Nếu điểm xuất phát là tường thì không có đường từ điểm ấy, không tự chuyển sang một ô khác.

Tạo bản hiển thị sau tìm kiếm

```python def wall_view(maze, sol, mark_walls=False): return [['x' if mark_walls and maze[y][x] == 1 else sol[y][x] for x in range(len(row))] for y, row in enumerate(maze)] ``` Khi mark_walls=True, ô maze bằng 1 hiện thành chữ x; các ô còn lại giữ dấu 0/1 của sol. Hàm tạo một ma trận mới nên không thay tường trong maze hoặc dấu vết số trong sol. ```text python3 g11-cs-me-cung.py g11-cs-me-cung.inp --giua --danh-tuong --output giua.out ``` Cần nhận x đúng các vị trí tường của tệp đầu vào, 1 trên đường và 0 ở các ô mở còn lại. Không dùng chữ x làm dấu đang đi trong thuật toán vốn kiểm sol bằng 0/1.

Bài luyện

Mê cung 3 hàng 6 cột chọn ô giữa theo công thức trên ở đâu?
Chọn một đáp án

Bài luyện

Đích được cho là một trong hai góc. Khi cần đọc maze[y][x], điều gì phải kiểm trước?
Chọn một đáp án

Bài luyện

Vì sao nên tạo bản hiển thị x thay vì sửa maze khi in?
Chọn một đáp án

Đang học