Giải thuật bản đồ mật độ mìn

Mọi người cho mk hỏi bài này. Nghĩ mãi mà ko ra. Search google không ra cái nào thời gian đủ nhỏ cả. Cho một bãi mìn kích thước m x n ô vuông, trên một ô có thể có chứa 1 quả mìn hoặc không, để biểu diễn bản đồ mìn, người ta có hai cách: *Cách 1 : Dùng bản đồ đánh dấu : sử dụng 1 lưới ô vuông kích thước m x n, trên đó tại ô (i, j) ghi số 1 nếu ô đó có mìn, ghi số 0 nếu ô đó không có mìn.* *Cách 2 : Dùng bản đồ mật độ : sử dụng 1 lưới ô vuông kích thước m x n, trên đó tại ô (i, j) ghi một số trong đoạn từ 0 đến 8 cho biết tổng số mìn trong các ô lân cận với ô (i, j) (ô lân cận với ô (i, j) là ô có chung với ô (i, j) ít nhất 1 đỉnh).* Giả thiết rằng 2 bản đồ được ghi chính xác theo tình trạng mìn trên hiện trường. **Công việc của lập trình viên là** : Từ bản đồ mật độ, hãy tái tạo lại bản đồ đánh dấu của bãi mìn. Dữ liệu vào : Vào từ file văn bản MINE.INP, các số trên 1 dòng cách nhau ít nhất 1 dấu cách : + Dòng 1 : Ghi 2 số nguyên dương m, n (2 <= m, n <= 30) + m dòng tiếp theo, dòng thứ i ghi n số trên hàng i của bản đồ mật độ theo đúng thứ tự từ trái qua phải. Kết quả : Ghi ra file MINE.OUT, các số trên 1 dòng cách nhau ít nhất 1 dấu cách : + Dòng 1 : Ghi tổng số lượng mìn trong bãi + m dòng tiếp theo, dòng thứ i ghi n số trên hàng i của bản đồ đánh dấu theo đúng thứ tự từ trái qua phải. Ví dụ : **MINE.INP** 10 10 0 1 1 1 0 1 1 1 0 0 1 3 3 3 1 1 0 1 1 1 2 4 5 4 2 2 1 2 2 1 2 3 4 4 1 1 0 1 1 2 2 3 3 3 2 3 1 3 2 2 1 0 1 1 0 2 0 2 0 1 1 1 1 1 2 3 2 3 2 2 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1 2 2 3 2 2 0 1 0 1 0 1 0 2 0 1 **MINE.OUT** 19 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 Bài này được viết trong cuốn sách Giải thuật và Lập trình của tác giả Lê Minh Hoàng. Mong các cao nhân giúp đỡ!!!
Chưa có câu trả lời nào