Hãy tưởng tượng một kẻ chủ mưu đi dạo quanh thị trấn và chọn nạn nhân của nó theo một mô hình rất cụ thể (Hoặc, thay vào đó, hãy tưởng tượng một con ong bay quanh vườn và hái hoa để thụ phấn theo một mô hình rất cụ thể ). Giả sử thị trấn là ma trận N × N , trong đó N là số nguyên cao hơn hoặc bằng 2 . Kẻ chủ mưu bắt đầu từ góc trên bên trái và liên tiếp đặt các điểm M ở phía trước chúng (trong đó M là số nhà mà chúng hiện đang ở), trong khi thay đổi hướng di chuyển sau mỗi đám cháy, theo thứ tự Đông ⟶ Nam ⟶ Tây Bắc Đông ⟶ Nam ... vân vân. Bài hát rucủa kẻ chủ mưu là giá trị của M khiến họ rời khỏi thị trấn (tức là ngôi nhà cuối cùng họ ghé thăm trước khi dừng việc ghê tởm). Đây là cách dễ hiểu hơn với một ví dụ. Lấy ma trận sau đây làm ví dụ:
3 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1
- Chúng tôi bắt đầu ở góc trên bên trái, vì vậy M = 3 (
X
đánh dấu các vị trí hiện tại và trước đó của kẻ chủ mưu):X 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1
- Theo thứ tự đã biết, đầu tiên nó đi về phía đông điểm M (3) và hạ cánh trên 2 để M thay đổi tương ứng:
X 2 3 X 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1
- Sau đó, nó đi về phía nam 2 điểm và M là 1 :
X 2 3 X 7 3 1 4 1 6 2 5 3 X 1 4 4 3 2 4 1 1 1 1 1
- Bây giờ nó di chuyển 1 điểm về phía Tây và M trở thành 3 :
X 2 3 X 7 3 1 4 1 6 2 5 XX 1 4 4 3 2 4 1 1 1 1 1
- Sau khi nó di chuyển 3 điểm về phía bắc, nó rời khỏi thị trấn! Vì vậy, 3 là bài hát ru của kẻ chủ mưu này:
X X 2 3 X 7 3 1 4 1 6 2 5 XX 1 4 4 3 2 4 1 1 1 1 1
Đưa ra một ma trận N × N (bạn cũng có thể tùy chọn lấy N làm đầu vào), tìm bài hát ru của người chủ mưu. Tôi đã viết một chương trình mà bạn có thể tạo ra nhiều trường hợp thử nghiệm hơn và hình dung đường dẫn của kẻ chủ mưu: Hãy thử trực tuyến!
- Bạn có thể cho rằng kẻ chủ mưu thực sự có một bài hát ru (nghĩa là nó thực sự có thể thoát ra khỏi ma trận).
- Ma trận sẽ chỉ chứa các số nguyên dương nhỏ hơn hoặc bằng 9 (chữ số), vì đơn giản. Các giải pháp xử lý bất kỳ số nguyên dương nào đều được chào đón.
- Lưu ý rằng kẻ chủ mưu có thể hạ cánh tại một điểm mà chúng đã bị đốt cháy, trong trường hợp cảm giác chúng di chuyển khác với lần đầu tiên. Trong kịch bản như vậy, chỉ cần lấy giá trị của phần tử đó và di chuyển lại như bình thường.
- Bạn có thể cạnh tranh trong bất kỳ ngôn ngữ lập trình nào và có thể nhận đầu vào và cung cấp đầu ra thông qua bất kỳ phương thức tiêu chuẩn nào , trong khi lưu ý rằng các lỗ hổng này bị cấm theo mặc định. Đây là môn đánh gôn , vì vậy bài nộp ngắn nhất (tính bằng byte) cho mọi ngôn ngữ sẽ thắng.
Các trường hợp thử nghiệm
------------- 9 2 3 1 7 2 8 7 6 Bài hát ru: 9 ------------- 2 1 2 1 3 1 1 2 1 2 2 1 1 1 1 3 Bài hát ru: 2 ------------- 3 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1 Bài hát ru: 3 ------------- 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 Bài hát ru: 2 ------------- 3 2 1 2 1 1 1 2 3 2 3 2 1 1 2 1 1 1 3 1 2 3 1 1 1 1 1 1 4 5 2 3 1 1 1 1 2 1 2 1 2 2 1 2 2 3 2 1 2 Bài hát ru: 3 -------------
Các ma trận trong một định dạng khác nhau:
[[9, 2, 3], [1, 7, 2], [8, 7, 6] [[2, 1, 2, 1], [3, 1, 1, 2], [1, 2, 2, 1], [1, 1, 1, 3]] [[3, 2, 3, 2, 7], [3, 1, 4, 1, 6], [2, 5, 3, 1, 1], [4, 4, 3, 2, 4], [ 1, 1, 1, 1, 1]] [[1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2]] [[3, 2, 1, 2, 1, 1, 1], [2, 3, 2, 3, 2, 1, 1], [2, 1, 1, 1, 3, 1, 2], [ 3, 1, 1, 1, 1, 1, 1], [4, 5, 2, 3, 1, 1, 1], [1, 2, 1, 2, 1, 2, 2], [1, 2, 2, 3, 2, 1, 2]]
Trường hợp thử nghiệm thứ năm là rất thú vị để hình dung .