Đến nội dung

Hình ảnh

1 bài thuật toán trong tin học 10

* * * * * 1 Bình chọn

  • Please log in to reply
Chủ đề này có 7 trả lời

#1
Rias Gremory

Rias Gremory

    Del Name

  • Thành viên
  • 1384 Bài viết

Cho 1 dãy số gồm n phần tử gồm các số hạng 0;1;2. Hãy sắp xếp để các số 0 đứng ở giữa, các số 1 lên đầu, các số 2 đứng cuối.

P/s: chuẩn bị thi tin học 9, ôn luôn phần lớp 10



#2
nghethuat102

nghethuat102

    Trung sĩ

  • Thành viên
  • 147 Bài viết


Cho 1 dãy số gồm n phần tử gồm các số hạng 0;1;2. Hãy sắp xếp để các số 0 đứng ở giữa, các số 1 lên đầu, các số 2 đứng cuối.

P/s: chuẩn bị thi tin học 9, ôn luôn phần lớp 10

Bài này thấy hay hay, mình thấy có rất nhiều cách để làm ^^

var a,b:array[1..100] of 0..2;
    i,j,n,m:integer;
    begin
    write('n=');
    readln(n);
    for i:=1 to n do
        begin
        write('a[',i,']=');
        readln(a[i]);
        end;
    i:=1;
    j:=n;
    for m:=1 to n do
        if a[m]=1 then
            begin
               b[i]:=1;
               i:=i+1;
            end
        else if a[m]=2 then
             begin
               b[j]:=2;
               j:=j-1;
             end;
       for i:=1 to n do
           write(b[i]:3);
       readln;
       end.


#3
nghethuat102

nghethuat102

    Trung sĩ

  • Thành viên
  • 147 Bài viết


Cho 1 dãy số gồm n phần tử gồm các số hạng 0;1;2. Hãy sắp xếp để các số 0 đứng ở giữa, các số 1 lên đầu, các số 2 đứng cuối.

P/s: chuẩn bị thi tin học 9, ôn luôn phần lớp 10

C2:

var a:array[1..100] of 0..2;
    i,j,n,m:integer;
    begin
    write('n=');
    readln(n);
    m:=0;
    for i:=1 to n do
        begin
        write('a[',i,']=');
        readln(a[i]);
        if a[i]=2 then m:=m+1;
        end;
    for i:=1 to n-1 do
        for j:=i+1 to n do
        if a[i]<a[j] then
           begin
            a[i]:=a[i]+a[j];
            a[j]:=a[i]-a[j];
            a[i]:=a[i]-a[j];
           end;
    for i:=m+1 to n do
        write(a[i]:3);
    for i:=1 to m do
        write(a[i]:3);
    readln;
    end.


#4
nghethuat102

nghethuat102

    Trung sĩ

  • Thành viên
  • 147 Bài viết


Cho 1 dãy số gồm n phần tử gồm các số hạng 0;1;2. Hãy sắp xếp để các số 0 đứng ở giữa, các số 1 lên đầu, các số 2 đứng cuối.

P/s: chuẩn bị thi tin học 9, ôn luôn phần lớp 10

Cách 3 :v

var a:array[1..100] of 0..2;
    i,n,b,c:integer;
    begin
    write('n=');
    readln(n);
     b:=0;
     c:=0;
    for i:=1 to n do
        begin
        write('a[',i,']=');
        readln(a[i]);
        if a[i]=1 then b:=b+1
        else if a[i]=0 then c:=c+1;
        end;
    writeln;
    for i:=1 to n do
        if i<=b then write('1  ')
        else if (i<=b+c)and(i>b) then write('0  ')
        else write('2  ');
    readln;
    end.


#5
Hung Duc

Hung Duc

    Trung sĩ

  • Thành viên
  • 139 Bài viết
Lop 10 hoc thuat toan thoi
Ý tưởng là gán 1=3, 0=4, 2=5. Sau đó sắp thành dãy tăng. Sau khi sắp xong thì gán trở lại

#6
Hung Duc

Hung Duc

    Trung sĩ

  • Thành viên
  • 139 Bài viết
C2: Nếu a(i)=0 và a(i 1) =1 kết hợp a(i) =2 và a(i 1) =1 hoặc =0 thì đổi chỗ

#7
Hung Duc

Hung Duc

    Trung sĩ

  • Thành viên
  • 139 Bài viết
C3: Đếm số lượng các chữ số sau đó đưa ra dãy

#8
Hung Duc

Hung Duc

    Trung sĩ

  • Thành viên
  • 139 Bài viết
C4: Sắp thành dãy tăng rồi đổi chỗ 0 và 1 cho đến khi a(i) = 2 thì dừng




0 người đang xem chủ đề

0 thành viên, 0 khách, 0 thành viên ẩn danh