GHÉT NHAU NÉM ĐÁ

Một phần của tài liệu 150+Bài Toán Tin pdf (Trang 155 - 157)

Liz và Lilly đã từng là những người bạn rất thân, nhưng họđã cãi lộn và quyết định chia tay nhau. "Tôi không muốn nhìn thấy bạn nữa, tôi sẽđặt những tảng đá ởđâu đó để nếu tôi có đi đâu từ nhà, tôi cũng không bao giờ phải nhìn thấy cái bản mặt của bạn" - Cả hai đều nói.

L&L cùng sống trong một ngôi làng nhỏđược chia thành lưới ô vuông nxn. Nhà của Liz ở ô (1, 1) và nhà Lilly ở ô (n, n). Mỗi ô của lưới mang một trong 3 ký hiệu:

• ".": Vùng đất (Land) • "X": Hồ (Lake) • "*": Tảng đá (Rock)

Mỗi người có thể di chuyển từ một ô sang ô kề cạnh nếu đó là vùng đất, và khi đứng ở một ô (x, y), họ có thể nhìn thấy ô (x', y') nếu:

• Ô (x', y') là cùng hàng hoặc cùng cột với ô (x, y)

• Khoảng cách từ ô (x, y) đến ô (x', y') không quá k • Không có tảng đá nào chắn tầm mắt

Cả hai đều là kẻ lười biếng, vì vậy họ chỉ muốn đặt thêm một số ít nhất các tảng đá. Đồng thời, các tảng đá phải đặt cách nhà của mỗi người một khoảng cách tối thiểu là m.

Lưu ý: Khoảng cách giữa hai ô (x1, y1) và (x2, y2) quy ước là x1 - x2 + y1 - y2

Hãy ch ra cách đặt các tng đá tho mãn yêu cu ca c hai người

Dữ liệu: Vào từ file văn bản FAREWELL.INP

• Dòng 1: Chứa 3 số n, k, m (5 ≤ n ≤ 20; 1 ≤ k, m ≤ n) cách nhau đúng 1 dấu cách

• n dòng tiếp theo, dòng thứ i chứa n ký tự liên tiếp mà ký tự thứ j là ký hiệu ô (i, j) của lưới

Kết quả: Ghi ra file văn bản FAREWELL.OUT

• Dòng 1: Ghi số tảng đá phải đặt, trong trường hợp không có phương án thì dòng này ghi số -1 • Trong trường hợp có phương án khả thi thì n dòng tiếp theo, dòng thứ i ghi n ký tự liên tiếp mà

ký tự thứ j là ký hiệu ô (i, j) của lưới sau khi đã đặt đá. Lưu ý rằng ta vẫn dùng ký hiệu * cho những tảng đá đã có và dùng ký hiệu "#" cho những tảng đá đặt thêm

Ví dụ

FAREWELL.INP FAREWELL.OUT FAREWELL.INP FAREWELL.OUT 7 4 4 7 4 4 ... ...* ....*X. **.*.X. ...*... .XX..*. ... 2 ... ...#* ....*X. **#*.X. ...*... .XX..*. ... 8 7 3 ... .XXXXXX. .X....X. .X....X. .X....X. .X....X. .XXXXXX. ... 4 ...#.... .XXXXXX. .X....X. #X....X. .X....X# .X....X. .XXXXXX. ....#...

144. NI DÂY

Xét hình chữ nhật R trong hệ trục toạđộ Decattes vuông góc có các đỉnh là (0, 0); (m, 0); (m, n) và (0, n). Ta gọi một đoạn nối là một đoạn thẳng nằm trong R, độ dài 1 đơn vị mà các toạđộ của hai

đầu mút là số nguyên (dễ thấy đoạn nối chỉ có một trong hai dạng: (x, y)-(x+1, y) hoặc (x, y)-(x, y+1). Ban đầu có một vài đoạn nối được vẽ sẵn trong R. Có hai người chơi, mỗi người khi đến lượt mình được quyền vẽ ra một đoạn nối, nếu đoạn này cùng với các đoạn nối đã vẽ khép kín thêm

được một ô vuông đơn vị nào đó thì người chơi sẽđược chiếm các (1 hoặc 2) ô vuông này và phải tiếp tục các thao tác như trên cho tới khi :

• Hoặc tất cả các đoạn nối đã được vẽ⇒ trò chơi kết thúc

• Hoặc vẫn còn đoạn nối chưa vẽ nhưng bước nối cuối cùng không chiếm được thêm ô vuông đơn vị nào, trò chơi sẽđược tiếp tục với người kia bằng luật chơi tương tự

Gi s chương trình ca bn tham gia trò chơi vi vai trò người đi trước, người kia là mt chương trình khác. Hãy lp trình th hin chiến thut chơi sao cho ti khi trò chơi kết thúc, s ô chương trình ca bn chiếm được là nhiu nht có th.

Dữ liệu: Vào từ file văn bản CELLS.INP

• Dòng 1: Chứa hai số m, n (1 ≤ m, n ≤ 100)

• Các dòng tiếp, mỗi dòng ghi 4 số x1, y1, x2, y2 thể hiện một đoạn nối đã vẽ sẵn: (x1, y1)-(x2, y2)

Kết quả mỗi lượt đi của bạn phải ghi vào file văn bản PLAYER1.DAT gồm một số dòng, dòng thứ

i ghi 4 số x1(i), y1(i), x2(i), y2(i) tượng trưng cho đoạn nối (x1(i), y1(i)) - (x2(i), y2(i)) là đoạn nối thứ i trong lượt đi.

Chương trình của bạn phải khai báo sử dụng thư viện CELLS.TPU, sau mỗi lượt đi, khi đã tạo file PLAYER1.DAT, bạn phải gọi thủ tục InterChange của thư viện này để nhận được file văn bản PLAYER2.DAT có khuôn dạng như PLAYER1.DAT chứa các thông tin về lượt đi của máy tiếp theo lượt đi của bạn. Lưu ý rằng trong bất kỳ trường hợp nào trò chơi kết thúc (sau lượt đi của bạn hay của máy), thủ tục InterChange cũng sẽ dừng chương trình tức khắc để thống kê số ô chiếm

được của hai bên.

X X X X X X O O O O O O O start Player 1 player 2

CELLS.INP PLAYER1.DAT PLAYER2.DAT 3 3 3 3 0 0 0 1 0 0 1 0 1 0 2 0 1 2 1 3 2 2 2 3 3 2 3 3 2 1 3 1 3 1 3 2 2 0 2 1 1 0 1 1 0 1 1 1

Một phần của tài liệu 150+Bài Toán Tin pdf (Trang 155 - 157)