Hãy tưởng tượng một mảng hai chiều của các giá trị boolean, trong đó các số 0 biểu thị các ô cỏ trên một ô đất hình chữ nhật và các số 1 biểu thị hàng rào.
Viết hàm chấp nhận mảng 2D làm đầu vào và xác định xem bạn có thể đi từ bất kỳ một vùng cỏ nào đến bất kỳ vùng cỏ nào khác không, chỉ sử dụng các chuyển động bắc / đông / tây / nam, mà không cần chạy vào hàng rào.
Nếu bất kỳ khu vực cỏ nào trong mảng được bao quanh hoàn toàn bởi hàng rào (có nghĩa là bạn không thể di chuyển N / E / W / S để đến mọi khu vực khác của cỏ trong mảng), hàm sẽ trả về sai; nếu không, nó sẽ trả về đúng
Dưới đây là hai mảng mẫu bạn có thể sử dụng làm đầu vào, mặc dù chức năng của bạn sẽ có thể xử lý không chỉ các mảng này mà bất kỳ mảng 2D nào của các giá trị boolean:
0 0 0 0 0
0 1 0 0 0
0 1 1 1 1
0 0 0 0 0
0 0 0 1 1
(should return true)
0 1 0 1 0
0 1 1 0 0
0 0 0 0 0
0 0 0 1 0
1 1 1 1 0
(should return false, since the middle 0 in the top row is fully enclosed)
Mã làm việc ngắn nhất sẽ thắng. Tôi sẽ chọn người chiến thắng sau khi một tuần trôi qua hoặc không có bài nộp mới trong vòng 24 giờ.
1 1 1; 1 0 1; 1 1 1? Có một tế bào cỏ ở trung tâm. Trực quan các tế bào cỏ ở trung tâm được bao quanh hoàn toàn bởi hàng rào, nhưng theo định nghĩa của bạn thì không.