Hãy xem xét các định nghĩa sau đây được lấy từ Số lần chạy trong một chuỗi bởi W. Rytter. Lưu ý rằng từ, chuỗi và chuỗi con đều là từ đồng nghĩa.
Một chuỗi trong một chuỗi là một phân đoạn định kỳ không thể lặp lại (với cùng một khoảng thời gian tối thiểu) trong một chuỗi.
Một khoảng thời gian p của một từ w là bất kỳ số nguyên dương p nào sao cho w [i] = w [i + p] bất cứ khi nào cả hai mặt của phương trình này được xác định. Đặt per (w) biểu thị kích thước của khoảng thời gian nhỏ nhất của w. Chúng tôi nói rằng một từ w là iff định kỳ trên (w) <= | w | / 2.
Ví dụ, xem xét chuỗi x = abcab
. per(abcab) = 3
như x[1] = x[1+3] = a
, x[2]=x[2+3] = b
và không có thời kỳ nhỏ hơn. Chuỗi abcab
do đó không phải là định kỳ. Tuy nhiên, chuỗi abab
là định kỳ theo (abab) = 2.
Một lần chạy (hoặc định kỳ tối đa) trong chuỗi w là một khoảng [i ... j] với j> = i, sao cho
- w [i ... j] là một từ định kỳ với khoảng thời gian p = per (w [i ... j])
- Nó là tối đa. Chính thức, không w [i-1] = w [i-1 + p] cũng không w [j + 1] = w [j + 1-p]. Một cách không chính thức, việc chạy không thể được bao gồm trong một lần chạy lớn hơn với cùng thời gian.
Biểu thị bằng RUNS (w) tập hợp các lần chạy của w.
Ví dụ
Bốn lần chạy atattatt
là [4,5] = tt, [7,8] = tt, [1,4] = atat, [2,8] = tattatt.
Chuỗi aabaabaaaacaacac
chứa 7 lần chạy sau:
[1,2] = aa, [4,5] = aa, [7,10] = aaaa, [12,13] = aa, [13,16] = acac, [1,8] = aabaabaa, [9 , 15] = aacaaca.
Đầu ra của bạn nên là một danh sách các hoạt động. Mỗi lần chạy nên chỉ định khoảng thời gian nó biểu thị nhưng không cần phải tự xuất chuỗi con. Các định dạng chính xác có thể là bất cứ điều gì thuận tiện cho bạn.
Các ví dụ sử dụng lập chỉ mục 1 nhưng bạn có thể tự do sử dụng lập chỉ mục 0 thay vào đó nếu thuận tiện hơn.
BÀI TẬP
Viết mã đã cho một chuỗi w, đầu ra RUNS (w).
Ngôn ngữ và đầu vào
Bạn có thể sử dụng bất kỳ ngôn ngữ nào bạn thích và lấy chuỗi đầu vào dưới bất kỳ hình thức nào thuận tiện nhất. Tuy nhiên, bạn phải cung cấp một chương trình đầy đủ và bạn sẽ hiển thị một ví dụ về mã của bạn đang chạy trên đầu vào ví dụ.
class A{public static ...}
mỗi khi tôi muốn viết mã golf