Tìm điểm cực tiểu của mảng hai chiều trong Pascal

Tìm điểm cực tiểu của mảng hai chiều

Một phần tử được gọi là điểm cực tiểu của mảng 2 chiều A[m.n] nếu nó không lớn hơn các phần tử kề nó. Hãy lập trình tìm các điểm cực tiểu (cho m,n  100, các giá trị của phần tử mảng có giá trị tuyệt đối không quá 32000)

Dữ liệu vào: cho file CUCTIEU.INP gồm:

–       Dòng đầu tiên  gồm 2 số M, N (0 ≤ M,N ≤100)

–       M dòng tiếp theo, mỗi dòng gồm có N số nguyên của mảng A

(các giá trị cách nhau ít nhất 1 khoảng cách).

Dữ liệu ra: ghi ra file CUCTIEU.OUT vị trí của các điểm cực tiểu

Ví dụ:

CUCTIEU.INP CUCTIEU.OUT
3 47        4       9  29        3       6  16        7       8  0 (2, 2)(3, 4)





























var dem,i,j,m,n,min_i,k,max:longint;yn:boolean;
  f:text;a:array[0..101,0..101] 








 of longint;
begin

{--------------Doc ra mang------------------}
  assign(f,'cuctieu.inp');
  reset(f);
  readln(f,m,n);
  for i:=1 to m do
           begin
              for j:=1 to n do read(f,a[i,j] 





);
              readln(f);
           end;
  close(f);
{----------------Mo rong mang----------------}
max:=32000;
 for i:=1 to n do begin a[0,i] :=max; a[m+1,i] 
:=max; end;//cho hang 0, m+1 nhan gia tri lon nhat
 for i:=1 to m do begin a[i,0] :=max; a[i,n+1] 





:=max; end;//cho cot 0, n+1 nhan gia tri lon nhat

{------------ tim diem cuc tieu ------------}
assign(f,'cuctieu.out'); rewrite(f);
    for i:=1 to m do
    for j:=1 to n do
    if (a[i,j] <=a[i-1,j-1] )and(a[i,j] <=a[i-1,j] )and(a[i,j] <=a[i-1,j+1] 
)
    and(a[i,j] <=a[i,j-1] )and(a[i,j] <=a[i,j+1] 
)
    and(a[i,j] <=a[i+1,j-1] )and(a[i,j] <=a[i+1,j] )and(a[i,j] <=a[i+1,j+1] 


) then writeln(f,'(',i,' ',j,')');

close(f);
end.

 

Read:   Một số vấn đề cơ bản về soạn thảo công thức toán trong Latex
Hình đại diện của người dùng

admin

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *