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 110
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
149303 -
Đã trả lời bởi chuyên gia
99719 -
Đã trả lời bởi chuyên gia
97338 -
Đã trả lời bởi chuyên gia
80007 -
Đã trả lời bởi chuyên gia
72853 -
Đã trả lời bởi chuyên gia
55936 -
Đã trả lời bởi chuyên gia
55307
