Mỗi ô trên bàn cờ tổng quát kích thước nxn được mã hoá bằng các ký hiệu sau:
• ".": Ô tự do • "#": Ô cấm
• "$": Ô tự do có một quân mã đang đứng • "@": Ô tự do tương ứng với một vị trí tập kết
Đội hình các quân mã được gọi là "liên hoàn" nếu chúng tạo thành một miền liên thông theo quan hệ mã giao chân.
Một lệnh hành quân là một phép di chuyển đội hình các quân mã thoả mãn:
• Mỗi quân mã có thểđứng yên hoặc thực hiện đúng một nước đi theo luật cờ • Sau lệnh hành quân:
♦ Các quân mã chỉ nằm trên các ô tự do ♦ Mỗi ô chứa không quá một quân mã ♦ Toàn đội hình các quân mã phải liên hoàn.
Yêu cầu:
Hãy tìm một số hữu hạn các lệnh hành quân để chuyển đội hình các quân mã về các ô @ ! Càng ít lệnh bao nhiêu càng tốt !
Dữ liệu: Vào từ file văn bản KMOVE.INP
• Dòng 1: Chứa số n
• n dòng tiếp theo, dòng thứ i chứa n ký tự, ký tự thứ j là ký hiệu tương ứng với ô (i, j)
Kết quả: Ghi ra file văn bản KMOVE.OUT
Gồm một số dòng, mỗi dòng ghi một lệnh hành quân: gồm các bộ 4 số x1, y1, x2, y2 tượng trưng cho nước đi của một quân mã từ ô (x1, y1) đến ô (x2, y2)
Các số trên một dòng của Output file ghi cách nhau ít nhất một dấu cách
Ràng buộc: Trạng thái ban đầu của bàn cờđược cho để luôn tồn tại phương án thực hiện yêu cầu
trên. 2 ≤ n ≤ 100; 1 ≤ Số ô $ = Số ô @ ≤ 100; Tập các ô $ cũng như tập các ô @ đều là đội hình mã liên hoàn. Ví dụ: KMOVE.INP KMOVE.OUT 6 ... $..@#. ..$... $..#@# #....# 3 3 4 5 4 1 3 3 4 5 6 4 3 3 4 5 2 1 3 3 4 5 2 4 3 3 4 5