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.