Hàm tiền tố (Prefix Function)
Xem dưới dạng PDF
Gửi bài giải
Điểm:
10
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
đầu vào:
stdin
Đầu ra:
stdout
Tác giả:
Kiểu bài tập
Trong thuật toán KMP, hàm tiền tố (prefix function) \(\pi[i]\)được định nghĩa là độ dài lớn nhất của tiền tố thực sự của xâu\(S[0 \ldots i]\)đồng thời là hậu tố của nó. Hãy viết chương trình tính hàm tiền tố cho xâu\(S\).
Định dạng đầu vào
- Một dòng chứa xâu \(S\) (\(1 \le |S| \le 10^5\)).
Định dạng đầu ra
- In ra \(N\) số nguyên \(\pi[0], \pi[1], \dots, \pi[N-1]\) trên một dòng.
Ví dụ
Input:
aabaaab
Output:
0 1 0 1 2 2 3
Giải thích: Với S = "aabaaab":
- \(\pi[0] = 0\) (xâu
akhông có tiền tố thực sự) - \(\pi[1] = 1\) (aacó tiền tố-hậu tốa) - \(\pi[2] = 0\) (
aabkhông có) - \(\pi[3] = 1\) (aabacóa) - \(\pi[4] = 2\) (
aabaacóaa) - \(\pi[5] = 2\) (aabaaacóaa) - \(\pi[6] = 3\) (
aabaaabcóaab)
Ràng buộc
- 100% số điểm: \(|S| \le 10^5\).
Nhận xét