Trang chủ Tin Học Lớp 8 Dãy được gọi là đối xứng nếu viết các phần...

Dãy được gọi là đối xứng nếu viết các phần tử của nó theo thứ tự ngược lại thì vẫn được chính nó. dãy được gọi là khả đối xứng nếu đổi chổ các phần tử của nó t

Câu hỏi :

Dãy được gọi là đối xứng nếu viết các phần tử của nó theo thứ tự ngược lại thì vẫn được chính nó. dãy được gọi là khả đối xứng nếu đổi chổ các phần tử của nó thì được dãy đối xứng. cho một dãy số nguyên, kiểm tra xem nó có khả năng đối xứng hay không? nếu có thì biến đổi nó để được một dãy đối xứng Mn giải giúp vs ạ

Lời giải 1 :

uses crt;
var i,ii,j,k,d,n,tam:longint;
    a,b:array[1..100000000] of longint;
begin
    clrscr;
    readln(n);
    for i:=1 to n do read(a[i]);readln;
    for i:=1 to n-1 do
       for j:=i+1 to n do
          if a[i]>a[j] then
          begin
               tam:=a[i];
               a[i]:=a[j];
               a[j]:=tam;
          end;
    if n mod 2=0 then
    begin
        i:=1;d:=0;
        while i<=n do
        begin
              j:=i;
              while a[j]=a[j+1] do inc(j);
              if (j-i+1) mod 2<>0 then
              begin
                   writeln('KHONG');
                   readln;
                   exit;
              end;
              for ii:=1 to (j-i+1) div 2 do
              begin
                    inc(d);
                    b[d]:=a[i];
                    b[n-d+1]:=a[i];
              end;
              i:=j+1;
           end;
    end
    else
    begin
        k:=0;
        i:=1;d:=0;
        while i<=n do
        begin
              j:=i;
              while a[j]=a[j+1] do inc(j);
              if (j-i+1) mod 2=1 then
              begin
                  b[n div 2 + 1]:=a[i];
                  inc(k);
              end;
              if k=2 then
              begin
                   writeln('KHONG');
                   readln;
                   exit;
              end;
              for ii:=1 to (j-i+1) div 2 do
              begin
                    inc(d);
                    b[d]:=a[i];
                    b[n-d+1]:=a[i];
              end;
              i:=j+1;
        end;
    end;
    for i:=1 to n do write(b[i],' ');
readln;
end.

Thảo luận

-- vd như dãy: 1 1 1 2 2 2 3
-- :))
-- hay 1 2 3
-- biến đổi thế nào được
-- 1 2 3 2 1 thì sao
-- đổi chỗ chứ có phải tạo thêm đâu :v
-- 1 2 3 2 1 thì nó vẫn thế
-- à ok ca :v

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ự 8

Lớp 8 - Năm thứ ba ở cấp trung học cơ sở, học tập bắt đầu nặng dần, sang năm lại là năm cuối cấp áp lực lớn dần nhưng các em vẫn phải chú ý sức khỏe 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