Hãy xem xét các ma trận đường chéo khối nhị phân có các khối vuông 1s trên đường chéo chính và là 0 ở mọi nơi khác. Chúng ta hãy gọi các ma trận "hợp lệ" như vậy.
Ví dụ: đây là một số ma trận 4x4 hợp lệ:
1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 1 1 1
0 1 0 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1
0 0 1 0 0 0 1 0 0 1 1 0 0 1 1 1 0 0 1 1 1 1 1 1
0 0 0 1 0 0 0 1 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1
Lưu ý rằng một cách khác để mô tả các ma trận như vậy là có một chuỗi các khối vuông 1 từ trên cùng bên trái sang dưới cùng bên phải, chạm góc này sang góc khác và mọi nơi khác là 0.
Ngược lại, đây là một số ma trận 4x4 không hợp lệ:
1 0 1 0 1 0 1 0 1 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0
0 1 1 1 0 1 0 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0
1 0 0 1 1 0 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0
0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0
Bạn sẽ được cung cấp một n
bằng n
ma trận nhị phân như là đầu vào - số lượng tối thiểu của những gì là 0
bit bạn sẽ cần phải thiết lập để 1
để có được một ma trận hợp lệ?
Bạn có thể viết một hàm hoặc chương trình lấy bằng bất cứ chuỗi thuận tiện, danh sách hoặc ma trận dạng đại diện cho một n
bằng n
ma trận của 0s và 1s (miễn là nó không được xử lý trước). Các hàng phải được phân tách rõ ràng theo một cách nào đó, vì vậy các định dạng như mảng bit 1D không được phép.
Đây là môn đánh gôn , vì vậy mục tiêu là giảm thiểu số lượng byte trong chương trình của bạn.
Ví dụ
Ví dụ: nếu đầu vào là
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 1
thì câu trả lời là 5, vì bạn có thể đặt năm 0
bit 1
để nhận:
1 0 0 0 0
0 1 1 0 0
0 1 1 0 0
0 0 0 1 0
0 0 0 0 1
và đây là số lượng tối thiểu cần thiết. Tuy nhiên, nếu đầu vào là
0 0 0 0 1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
thì câu trả lời là 24, vì ma trận 5x5 hợp lệ duy nhất trong đó phía trên bên phải là 1
ma trận của tất cả 1
s.
Các trường hợp thử nghiệm
Các thử nghiệm được trình bày ở đây dưới dạng một mảng số nguyên 2D.
[[0]] -> 1
[[1]] -> 0
[[0,1],[0,0]] -> 3
[[1,0],[0,0]] -> 1
[[0,0,0],[0,1,0],[0,0,0]] -> 2
[[0,1,0],[0,0,0],[0,1,0]] -> 7
[[0,1,0],[1,0,0],[0,0,1]] -> 2
[[1,1,1],[1,1,1],[1,1,1]] -> 0
[[0,0,0,0],[0,0,1,0],[0,1,0,0],[0,0,0,0]] -> 4
[[0,0,1,0],[0,0,0,0],[0,0,0,0],[0,0,0,1]] -> 8
[[0,0,1,0],[0,0,0,0],[0,0,0,0],[0,0,1,0]] -> 14
[[0,0,1,0],[0,0,0,0],[0,0,0,0],[0,1,0,0]] -> 14
[[0,0,0,0,0],[0,0,0,0,0],[0,1,0,0,0],[0,0,0,0,1],[0,0,0,0,0]] -> 7
[[0,0,0,0,0],[0,0,0,0,0],[1,0,0,0,0],[0,0,0,0,1],[0,0,0,0,0]] -> 11
[[0,0,0,0,0],[0,0,1,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,1]] -> 5
[[0,0,0,0,1],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]] -> 24
[[0,0,0,1,0],[0,0,0,0,1],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]] -> 23
[[0,1,0,0,0],[1,0,0,0,0],[0,0,1,0,0],[0,0,0,0,1],[0,0,0,1,0]] -> 4
[[0,1,1,1,0],[0,1,1,0,1],[0,1,1,1,0],[0,1,0,0,1],[0,0,0,0,0]] -> 14
Ghi chú
- Thử thách liên quan: In Ma trận khối chéo
- Cảm hứng: Freedom Factory, Google Code Jam 2016 Vấn đề 2D