Câu hỏi này có một thiết lập tương tự để Tìm một mảng phù hợp với một tập hợp mặc dù khá khác nhau trong các mục tiêu của nó.
Hãy xem xét một mảng Achiều dài n. Mảng chỉ chứa số nguyên dương. Ví dụ A = (1,1,2,2). Hãy để chúng tôi định nghĩa f(A)là tập hợp của tất cả các phân đoạn tiếp giáp không trống của A. Trong trường hợp này f(A) = {1,2,3,4,5,6}. Các bước để sản xuất f(A) như sau:
Các subarrays của Alà (1), (1), (2), (2), (1,1), (1,2), (2,2), (1,1,2), (1,2,2), (1,1,2,2). Số tiền tương ứng của họ là 1,1,2,2,2,3,4,4,5,6. Do đó, bộ bạn nhận được từ danh sách này là do {1,2,3,4,5,6}.
Chúng tôi gọi một mảng A duy nhất nếu không có mảng nào khác có Bcùng độ dài như vậy f(A) = f(B), ngoại trừ mảng bị Ađảo ngược. Ví dụ, f((1,2,3)) = f((3,2,1)) = {1,2,3,5,6}nhưng không có mảng độ dài 3nào khác tạo ra cùng một tập hợp tổng.
Chúng tôi sẽ chỉ xem xét các mảng trong đó các phần tử là một số nguyên cho trước shoặc s+1. Ví dụ, nếu s=1các mảng sẽ chỉ chứa 1và 2.
Bài tập
Nhiệm vụ, cho một nvà nhất định slà đếm số lượng các mảng duy nhất có độ dài đó. Bạn có thể cho rằng đó slà giữa 1và 9.
Bạn không nên đếm ngược lại của một mảng cũng như chính mảng đó.
Ví dụ
s = 1, câu trả lời là luôn n+1.
s = 2, các câu trả lời đếm từ n = 1lên là:
2,3,6,10,20,32,52,86
s = 8, các câu trả lời đếm từ n = 1lên là:
2,3,6,10,20,36,68,130
Ghi bàn
Đối với một nmã nhất định , mã của bạn sẽ đưa ra câu trả lời cho tất cả các giá trị stừ 1đến 9. Điểm của bạn là giá trị cao nhất nmà điều này hoàn thành trong một phút.
Kiểm tra
Tôi sẽ cần chạy mã của bạn trên máy ubfox của mình, vì vậy vui lòng bao gồm các hướng dẫn chi tiết nhất có thể về cách biên dịch và chạy mã của bạn.
Bảng xếp hạng
- n = 24 của Anders Kaseorg ở Rust (34 giây)
- n = 16 bởi Ourous in Clean (36 giây)
- n = 14 của JRowan trong Lisp chung (49 giây)