Professional Documents
Culture Documents
Ý Tư NG
Ý Tư NG
Trước hết, cần phải nói rằng: Có thể có rất nhiều cách đặt quân hậu trên bàn cờ thoả mãn yêu
cầu đề bài. Trên thực tế, với n = 8 thì có 12 cách xếp các quân hậu thoả mãn.
Bây giờ thì hãy quay lại với bài toán của chúng ta. Bài toán trên thực chất là một bài toán rất
nổi tiếng trong Tin học đã được đặt ra vào những năm 1848. Trong các cách giải được đưa ra,
cách phổ biến nhất đó chính là: Thử. Ta sẽ thử đặt 8 quân hậu vào các ô của bàn cờ sau đó
kiểm tra xem liệu cách đặt đó có phù hợp hay không.
Vậy thì chúng ta nên thử như thế nào đây?
Do các quân hậu không thể cùng nằm trên một hàng nên chắc chắn khi thử chúng ta
sẽ phải đặt n quân hậu trên n hàng riêng biệt. Như vậy là đã đảm bảo điều kiện về
hàng.
Với mỗi hàng chúng ta sẽ đặt thử các quân hậu vào các vị trí trên hàng đó rồi tiến
hành kiểm tra 2 điều kiện còn lại. Việc đặt thử này có thể tiến hành bằng việc dùng
vòng lặp để duyệt qua tất cả các vị trí.
Nếu gặp một trường hợp thoả mãn chúng ta có thể in ra kết quả và thoát chương trình.
Chi tiết về chuyện thử như thế nào hãy để ở phần sau. Bây giờ hãy xem xét một vấn đề:
Chúng ta sẽ kiểm tra điều kiện không cùng cột và đường chéo như thế nào?
Với điều kiện về cột, chúng ta sẽ sử dụng một mảng đánh dấu lại các cột đã có quân
hậu. Nếu có một quân hậu được đặt vào cột đã được đánh dấu thì cách xếp hậu là
không thoả mãn. Như vậy là ta đã kiểm tra được điều kiện về cột
Với đường chéo, mọi thứ sẽ phức tạp hơn. Ta nhận thấy, với mỗi quân hậu sẽ có 2
đường chéo để di chuyển. Chúng ta sẽ quy ước: đường chéo có chiều từ trái qua phải
sẽ là “đường chéo chính”, đường chéo có chiều từ phải qua trái sẽ là “đường chéo
phụ”.
Hãy cùng nhìn vào các ô ở đường chéo chính trong hình minh hoạ trên. Toạ độ các ô đó là (1,
2); (2, 3); (3, 4). Các bạn đã nhận ra điểm đặc biệt của các toạ độ kia chưa? Hiệu số giữa chỉ
số hàng và cột là cố định với tất cả các ô thuộc cùng một đường chéo chính và mỗi đường
chéo chính lại có một hiệu số riêng đặc trưng cho nó.
Bây giờ hãy cùng nhìn vào đường chéo phụ trong hình minh hoạ. Toạ độ các ô trên đường
chéo phụ là (1,2); (2, 1). Khác với đường chéo chính, tổng của chỉ số hàng và chỉ số cột của
các ô thuộc cùng một đường chéo phụ là giống nhau và mỗi đường chéo phụ lại có một tổng
riêng đặc trưng cho nó.
Từ hai nhận xét trên, ta có thể dùng hai mảng đánh dấu lại hiệu của đường chéo chính và tổng
của đường chéo phụ. Nếu quân hậu được đặt vào đường chéo đã được đánh dấu thì có nghĩa
là không hợp lệ.
Đây chính là mô hình đệ quy, phương pháp được sử dụng ở đây gọi là quay lui.
Code: