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

Mã đi tuần bằng quay lui

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

Dấu vết là thứ tự bước đi

Trên bàn cờ 8×8, từ vị trí ban đầu cần tìm hành trình qua mọi ô đúng một lần. Bài không yêu cầu bước cuối quay về ô đầu. board dùng −1 cho ô chưa đi; ô xuất phát mang số 0, các ô sau mang 1…63. Trong tệp này dùng tên row cho hàng, col cho cột và truy cập board[row][col], tránh nhầm với x,y của bài mê cung. Quân Mã đi lệch 2 hàng và 1 cột, hoặc 1 hàng và 2 cột, theo các dấu âm/dương. Có tối đa tám ứng viên; ở biên hoặc gần ô đã đi thì số lựa chọn hợp lệ ít hơn.

Chỉ đi vào ô trong bàn cờ và chưa đi

```python def isOK(row, col, board): n = len(board) return 0 <= row < n and 0 <= col < n and board[row][col] == -1 ``` Kiểm biên trước khi đọc board[row][col]. Dấu−1 là điều kiện chọn ô tiếp theo; số 0 vẫn là một ô đã đi, không phải ô trống.

Kiểm đủ 64 ô và từng nước đi

Chạy: ```text python3 g11-cs-ma-di-tuan.py 8 0 0 ``` Cần nhận tám dòng, mỗi dòng tám số; các giá trị 0…63 mỗi số đúng một lần và ô (hàng 0,cột 0) có số 0. Với từng cặp số liên tiếp, kiểm độ chênh hàng/cột là (2,1) hoặc (1,2) theo trị tuyệt đối. Chỉ có đủ số khác nhau chưa bảo đảm các nước đều hợp lệ. Tệp kết quả mẫu là một hành trình đã kiểm, không phải kết quả duy nhất. Thời gian quay lui có thể dài tùy điểm xuất phát; chạy lâu chưa phải bằng chứng không có hành trình. Bản thực hành nhận n từ 1 đến 8 để có thể thử thêm trường hợp nhỏ, nhưng nhiệm vụ trong bài vẫn là bàn cờ 8×8.

Bài luyện

Trong board, ô mang số 0 có ý nghĩa gì?
Chọn một đáp án

Bài luyện

Độ chênh tuyệt đối nào là một nước Mã hợp lệ?
Chọn một đáp án

Bài luyện

Nhánh con thất bại thì vì sao đặt ô vừa thử về −1?
Chọn một đáp án

Đang học