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

Quay lui để xếp đủ quân Hậu

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

In bàn cờ từ dãy vị trí

```python def showQueen(A, from_bottom=False): n = len(A) rows = range(n - 1, -1, -1) if from_bottom else range(n) for i in rows: for j in range(n): print(1 if A[j] == i else 0, end=' ') print() ``` Vòng ngoài chọn hàng i, vòng trong chọn cột j. Ô đó có quân khi A[j]==i; in 1 cho quân Hậu, 0 cho ô trống. Mặc định hàng 0 được in trên cùng. Tham số from_bottom sẽ được dùng khi đổi chiều đánh số hàng ở bài sau.

Khởi tạo rồi chạy từ cột 0

Sau khi đã định nghĩa ba hàm, khởi tạo: ```python n = 4 A = [0] * n ncount = 0 show_results = True from_bottom = False trynext(0) print('Q(4) =', ncount) ``` Hoặc chạy tệp đầy đủ: ```text python3 g11-cs-xep-hau.py 4 ``` Cần nhận hai dãy [1,3,0,2] và [2,0,3,1], mỗi dãy kèm bàn cờ gồm bốn dòng 0/1; cuối cùng Q(4)=2. Đối chiếu từng cột có một số 1, các hàng và đường chéo không xung đột. Với n=3, nhận Q(3)=0, không có bàn cờ nào được in. Trong trynext, ncount+=1 gán lại giá trị biến, nên cần global ncount để cập nhật biến tổng thể. Chỉ đọc n hoặc gán A[k] không đòi hỏi gán lại tên n hoặc A. Trước mỗi lần chạy mới phải đặt ncount=0; main trong tệp tải thực hiện việc đó.

Bài luyện

Khi trynext nhận k==n, điều gì đã được hoàn tất?
Chọn một đáp án

Bài luyện

Vì sao chương trình không cần pop sau trynext(k+1)?
Chọn một đáp án

Bài luyện

Nếu quên global ncount nhưng vẫn dùng ncount+=1 trong hàm, điều gì xảy ra ở nghiệm đầu?
Chọn một đáp án

Đang học