Bạn chưa đăng nhập. Vui lòng đăng nhập để hỏi bài
Long ca ca

Một xâu có đội dài lớn hơn 1 chỉ gồm các chữ cái La tinh in thường được gọi là số đối xứng nếu ta đọc xâu đó từ trái sang phải và từ phải sang trái là như nhau. Một xâu được gọi là siêu đối xứng, nếu nó là xâu đối xứng hoặc được tạo thành bằng cách ghép  liên tiếp từ nhiều xâu đối xứng.
Yêu cầu: Cho một xâu S, hãy đếm số xâu con siêu đối xứng của S ( Xâu con của một xâu S là một đoạn liên tiếp các kí tự của S)

VD: ababcb    Xuất ra:3 (aba,bcb,ababcb

pascal nha

meme
7 tháng 9 2023 lúc 13:41

Dưới đây là một ví dụ về cách giải quyết bài toán này bằng ngôn ngữ Pascal:

 function isPalindrome(s: string): boolean; var i, n: integer; begin n := Length(s); for i := 1 to n div 2 do begin if s[i] <> s[n - i + 1] then begin Result := false; Exit; end; end; Result := true; end; function countSuperPalindromes(s: string): integer; var i, j, n: integer; subStr: string; begin n := Length(s); Result := 0; // Đếm số xâu con đối xứng for i := 1 to n do begin subStr := '' for j := i to n do begin subStr := subStr + s[j]; if isPalindrome(subStr) then Inc(Result); end; end; // Đếm số xâu con siêu đối xứng for i := 1 to n - 1 do begin subStr := '' for j := i to n do begin subStr := subStr + s[j]; if isPalindrome(subStr) then Inc(Result); end; end; end; var s: string; begin s := 'ababcb' writeln(countSuperPalindromes(s)); end.

Kết quả của ví dụ trên sẽ là 3, tương ứng với 3 xâu con siêu đối xứng của xâu "ababcb" là "aba", "bcb", và "ababcb".

Lưu ý rằng đây chỉ là một cách giải quyết bài toán và có thể tồn tại các cách giải khác.


Các câu hỏi tương tự
Hello1234
Xem chi tiết
Hello1234
Xem chi tiết
Lâm Văn Nhựt
Xem chi tiết
Hello1234
Xem chi tiết
Phùng Trọng Hiếu
Xem chi tiết
Long ca ca
Xem chi tiết
Asuna
Xem chi tiết
Hello1234
Xem chi tiết
Lê Tuyết Dình
Xem chi tiết