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 126
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
149546 -
Đã trả lời bởi chuyên gia
99939 -
Đã trả lời bởi chuyên gia
97535 -
Đã trả lời bởi chuyên gia
80250 -
Đã trả lời bởi chuyên gia
73038 -
Đã trả lời bởi chuyên gia
56128 -
Đã trả lời bởi chuyên gia
55497
