Hãy tưởng tượng chúng ta có một ma trận các bit (chứa ít nhất một 1):
0 1 0 1 1 0 1 0 0 1 0
0 1 0 1 0 0 1 0 1 1 0
0 0 1 0 1 1 0 1 0 1 0
1 1 0 0 1 0 0 1 1 0 1
0 0 0 1 0 1 1 0 0 1 0
Chúng tôi muốn thiết lập một số bit trong ma trận này sao cho nó tạo thành một đốm liền kề của 1s, trong đó mọi bit 1được kết nối trực tiếp hoặc gián tiếp với nhau 1thông qua chuyển động trực giao:
0 1 1 1 1 1 1 0 0 1 0
0 1 0 1 0 0 1 0 1 1 0
0 1 1 0 1 1 1 1 0 1 0
1 1 0 0 1 0 0 1 1 1 1
0 0 0 1 1 1 1 0 0 1 0
(Bạn có thể thấy rõ hơn điều này bằng cách tìm kiếm 1với tính năng "tìm" của trình duyệt.)
Tuy nhiên, chúng tôi cũng muốn giảm thiểu số lượng bit mà chúng tôi đặt.
Nhiệm vụ
Đưa ra một ma trận (hoặc mảng các mảng) của bit hoặc booleans, trả về số lượng bit tối thiểu cần được đặt để tạo ra một lục địa liền kề của 1s. Có thể lấy từ bit set này trong ma trận sang ma trận khác bằng cách chỉ di chuyển theo hướng trực giao với các bit set khác.
Đây là môn đánh gôn , vì vậy bài nộp hợp lệ ngắn nhất (tính bằng byte) sẽ thắng.
Các trường hợp thử nghiệm
0 1 0 1 1 0 1 0 0 1 0
0 1 0 1 0 0 1 0 1 1 0
0 0 1 0 1 1 0 1 0 1 0
1 1 0 0 1 0 0 1 1 0 1
0 0 0 1 0 1 1 0 0 1 0
=> 6
1 0 0 0 0 0 1 0 0
1 1 0 0 1 1 1 0 0
1 1 1 0 1 1 1 1 1
0 1 0 0 0 0 0 0 0
0 0 0 0 0 1 1 1 1
0 1 0 0 0 0 1 1 0
1 0 0 0 0 0 1 0 0
=> 4
0 0 0 1 1 1 0 1 1
0 0 1 0 0 0 0 1 0
0 0 1 1 1 1 1 1 0
1 1 0 0 1 1 0 0 0
0 0 1 1 1 0 0 1 1
0 1 1 1 0 0 0 0 0
1 1 1 0 0 1 1 1 0
1 1 1 0 1 1 0 1 1
0 0 0 0 1 0 0 0 1
1 1 0 0 1 1 0 1 1
0 0 0 0 0 0 0 1 0
0 1 1 1 1 0 0 0 0
0 0 0 1 1 0 0 0 1
0 1 0 0 1 0 1 1 0
0 1 1 1 0 0 0 0 1
=> 8
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
=> 0
1trong ma trận?