Trang chủ Tin Học Lớp 9 Xâu đối xứng Cho xâu ký tự S chỉ gồm...

Xâu đối xứng Cho xâu ký tự S chỉ gồm các chữ cái in thường, hãy tìm một xâu con đối xứng dài nhất của S. (Một xâu con của xâu S là một dãy ký tự liên tiếp tron

Câu hỏi :

Xâu đối xứng Cho xâu ký tự S chỉ gồm các chữ cái in thường, hãy tìm một xâu con đối xứng dài nhất của S. (Một xâu con của xâu S là một dãy ký tự liên tiếp trong S. Một xâu con gọi là đói xứng nếu nó không thay đổi khi ta viết các ký tự theo thứ tự ngược lại) Dữ liệu: Vào từ file văn bản PALIND.INP gồm một dòng chứa sâu S gồm không qua 5000 chữ cái thường Kết quả: Ghi file văn bản PALIND.OUT xâu con tìm được Vì dụ PALIND.INP PALIND.OUT thehannahmontana hannah

Lời giải 1 :

const fi='palind.inp';
      fo='palind.out';
var s: ansistring;
    max,l,r,n,li,lj: longint;
procedure nhap;
begin
    assign(input,fi);
    reset(input);
    readln(s);
    close(input);
end;
function check(l,r:longint):boolean;
var c:longint;
begin
        for c:=1 to (r-l+1) div 2 do
                        if s[l+c-1]<>s[r-c+1] then exit(false);
                exit(true);
end;
procedure xuat;
var i,j: longint;
begin
    assign(output,fo);
    rewrite(output);
    max:=0;
    n:=length(s);
    for i:=1 to n do
        for j:=n downto i do
        begin
                if j-i+1 < max then break;
                        if check(i,j) then
                                begin
                                        if j-i+1 > max then
                                                begin
                                                        max:=j-i+1;
                                                        li:=i;
                                                        lj:=j;
                                                end;
                                        break;
                                end;
        end;
        for i:=li to lj do
        write(s[i]) ;
        close(output);
end;

begin
  nhap;
  xuat;
end.

Thảo luận

-- ý tưởng thuật toán là j z bn
-- thì cứ viết hàm check rồi xét cả xâu, thêm biến max rồi in ra
-- oki thanks bạn ^.^

Lời giải 2 :

var str,s:string[100];

      n,i:integer;

procedure sx( var a,b:char);

var tam:char;

begin

 tam:=a;

 a:=b;

 b:=tam;

end;

procedure dao(n,i:integer);

 var j:integer;

begin

   for j:=i+1 to n do

  if str[i]=str[j] then

begin

   sx(str[j],str[n-i+1]);

     exit

        end;

            end;

begin

clrscr;

write('nhap xau:');readln(str);

  n:=length(str);

   s:='';

 for i:=n downto 1 do s:=s+str[i];

 if str=s then writeln('chuoi doi xung:')

else

 begin

    writeln('chuoi ko doi xung,chuoi da dảo doi xung:');

      for i:=1 to n-1 do

       dao(n,i);

end;

  write(str);

readln;

end.

Bạn có biết?

Tin học, tiếng Anh: informatics, tiếng Pháp: informatique, là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng (ảo). Với cách hiểu hiện nay, tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin.

Nguồn : Wikipedia - Bách khoa toàn thư

Tâm sự 9

Lớp 9 - Là năm cuối ở cấp trung học cơ sở, sắp phải bước vào một kì thi căng thẳng và sắp chia tay bạn bè, thầy cô và cả kì vọng của phụ huynh ngày càng lớn mang tên "Lên cấp 3". Thật là áp lực nhưng các em hãy cứ tự tin vào bản thân là sẻ vượt qua nhé!

Nguồn : ADMIN :))

Liên hệ hợp tác hoặc quảng cáo: gmail

Điều khoản dịch vụ

Copyright © 2021 HOCTAPSGK