Đến nội dung

Hình ảnh

Sắp xếp các phần tử trong mảng


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

#1
Yagami Raito

Yagami Raito

    Master Tetsuya

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

Cho lưới ô vuông $m$ hàng, $n$ cột. Hãy sắp xếp các phần tử trong mảng tăng dần theo: 

a) Hình zic zắc : 

 VD :      1    2   3     4 

              9    8   7     6

             10 11 12   13 

b) Hình trôn ốc 

  VD :   

             1   3    5    7

            16 17 18    9 

            15 20  19  10

            14 13  12  11

 


:nav: Học gõ công thức toán học tại đây

:nav: Hướng dẫn đặt tiêu đề tại đây

:nav: Hướng dẫn Vẽ hình trên diễn đàn toán tại đây

--------------------------------------------------------------

 


#2
nghethuat102

nghethuat102

    Trung sĩ

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


Cho lưới ô vuông $m$ hàng, $n$ cột. Hãy sắp xếp các phần tử trong mảng tăng dần theo: 

a) Hình zic zắc : 

 VD :      1    2   3     4 

              9    8   7     6

             10 11 12   13 

b) Hình trôn ốc 

  VD :   

             1   3    5    7

            16 17 18    9 

            15 20  19  10

            14 13  12  11


  var f,g:text;
      a:array[0..100,0..100] of integer;
      b:array[0..10000] of integer;
      i,j,n,m,d:integer;
  begin
   assign(f,'xoanoc.inp');
   reset(f);
   assign(g,'xoanoc.out');
   rewrite(g);
   readln(f,n,m);
    for i:=1 to n do
     for j:=1 to m do
      read(f,a[i,j]);
   for i:=1 to n do
    for j:=1 to m do
     b[m*(i-1)+j]:=a[i,j];
   for i:=1 to n*m-1 do
    for j:=i+1 to n*m do
     if b[i]>b[j] then
      begin
       d:=b[i];
       b[i]:=b[j];
       b[j]:=d;
      end;
  for i:=1 to n do
   begin
    for j:=1 to m do
     begin
     if i mod 2=1 then a[i,j]:=b[(i-1)*m+j]
     else a[i,j]:=b[(i-1)*m+m-j+1];
     write(g,a[i,j]:3);
     end;
    writeln(g);
    end;
     close(f);
     close(g);
     end.
 
  var f,g:text;
      a:array[0..100,0..100] of integer;
      b:array[0..10000] of integer;
      c:array[0..100,0..100] of boolean;
      i,j,n,m,d:integer;
      procedure cong(var d1,d2:integer;d11,d22:integer);
       begin
       d:=d+1;
       d1:=d1+d11;
       d2:=d2+d22;
       a[d1,d2]:=b[d];
       c[i,j]:=false;
       end;
  begin
   assign(f,'xoanoc.inp');
   reset(f);
   assign(g,'xoanoc.out');
   rewrite(g);
   readln(f,n,m);
    for i:=1 to n do
     for j:=1 to m do
      begin
      c[i,j]:=true;
      read(f,a[i,j]);
      end;
   for i:=1 to n do
    for j:=1 to m do
     b[m*(i-1)+j]:=a[i,j];
   for i:=1 to n*m-1 do
    for j:=i+1 to n*m do
     if b[i]>b[j] then
      begin
       d:=b[i];
       b[i]:=b[j];
       b[j]:=d;
      end;
   i:=1;   j:=0;  d:=0;
   repeat
     while (c[i,j+1]=true)and(j<=m) do cong(i,j,0,1);
     while (c[i+1,j]=true)and(i<=n) do cong(i,j,1,0);
     while (c[i,j-1]=true)and(j>0) do cong(i,j,0,-1);
     while (c[i-1,j]=true)and(i>0) do cong(i,j,-1,0);
   until d=n*m;
   for i:=1 to n do
    begin
    for j:=1 to m do
    write(g,a[i,j]:3);
    writeln(g);
    end;
   close(f);
   close(g);
  end.





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

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