Lyndon word là các xâu khác rỗng, mà có thứ tự từ điển nhỏ hơn tất cả các xâu thu được bằng phép xoay của nó.
Cho một xâu S. Tìm cách tách S thành ít nhất các xâu, sao cho mỗi xâu đều là Lyndon word.
Quảng cáo
1 câu trả lời 115
void lyndon(string s) {
int n = (int) s.length();
int i = 0;
while (i < n) {
int j = i + 1, k = i;
while (j < n && s[k] <= s[j]) {
if (s[k] < s[j]) k = i;
else ++k;
++j;
}
while (i <= k) {
cout << s.substr(i, j - k) << ' ';
i += j - k;
}
}
cout << endl;
}
Quảng cáo
Bạn cần hỏi gì?
Câu hỏi hot cùng chủ đề
-
Đã trả lời bởi chuyên gia
149343 -
Đã trả lời bởi chuyên gia
99760 -
Đã trả lời bởi chuyên gia
97367 -
Đã trả lời bởi chuyên gia
80038 -
Đã trả lời bởi chuyên gia
72879 -
Đã trả lời bởi chuyên gia
55965 -
Đã trả lời bởi chuyên gia
55339
