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ó.

156

Top 1000 câu hỏi thường gặp môn Tin học có đáp án (phần 1) hay nhất được biên soạn và chọn lọc giúp bạn ôn luyện và đạt kết quả cao trong bài thi môn Tin học.

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ó.

Câu 73: 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.

Lời giải:

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;

}

Từ khóa :
Giải bài tập
Đánh giá

0

0 đánh giá